pastebin

Paste Search Dynamic
Recent pastes
sort indexes
  1.  #include <bits/stdc++.h>
  2.       #include <fstream>
  3.       using namespace std;
  4.       #define read(type) readInt<type>() // Fast read
  5.       #define ll long long
  6.       #define nL "n"
  7.       #define pb push_back
  8.       #define mk make_pair
  9.       #define pii pair<int, int>
  10.       #define a first
  11.       #define b second
  12.       #define vi vector<int>
  13.       #define all(x) (x).begin(), (x).end()
  14.       #define umap unordered_map
  15.       #define uset unordered_set
  16.       #define MOD 1000000007
  17.       #define imax INT_MAX
  18.       #define imin INT_MIN
  19.       #define exp 1e9
  20.       #define sz(x) (int((x).size()))
  21.      
  22.       vector<int> sort_indexes(vector<int> v) {
  23.         vector<pair<int,int>> pairs;
  24.         for(auto i = 1; i <= (int)v.size(); i++) {
  25.           pairs.pb(mk(v[i-1], i));
  26.         }
  27.  
  28.         sort(all(pairs));
  29.  
  30.         vector<int> indices;
  31.         for(auto i = 0; i < (int)pairs.size(); i++) {
  32.           indices.pb(pairs[i].b);
  33.         }
  34.         return indices;
  35.       }
  36.  
  37.       void solve() {
  38.         int n; cin >> n;
  39.         vector<int> x(n, -1); vector<bool> xUsed(n+1, false);
  40.         vector<int> y(n, -1); vector<bool> yUsed(n+1, false);
  41.        
  42.         bool vaild = true;
  43.  
  44.         if (n==1) {
  45.           int p; cin >> p;
  46.           cout << "YES" << endl;
  47.           cout << n << endl;
  48.           cout << n << endl;
  49.           return;
  50.         }
  51.  
  52.         vector<int> d; for(auto i = 0; i < n; i++) {int tmp; cin >> tmp; d.pb(tmp);}
  53.         vector<int> unsortD = d;
  54.  
  55.         sort(all(d));
  56.        
  57.         for(auto i = 0; i < n; i++) {
  58.           cout << "Processing " << d[i] << endl;
  59.           if (!xUsed[d[i]]) {
  60.             xUsed[d[i]] = true;
  61.             x[i] = d[i];
  62.  
  63.             cout << "Start looping " << d[i]-1 << endl;
  64.             for(auto j = d[i]-1; j > 0; j--) {
  65.               if (!yUsed[j]) {
  66.                 yUsed[j] = true;
  67.                 y[i] = j;
  68.                 break;
  69.               }
  70.             }
  71.  
  72.             cout << "y[i] Val: " << y[i] << endl;
  73.  
  74.             if (y[i] == -1) {
  75.               cout << "NO" << endl;
  76.               return;
  77.             }
  78.              
  79.           } else if (!yUsed[d[i]]) {
  80.             yUsed[d[i]] = true;
  81.             y[i] = d[i];
  82.  
  83.             for(auto j = d[i]-1; j > 0; j--) {
  84.               if (!xUsed[j]) {
  85.                 xUsed[j] = true;
  86.                 x[i] = j;
  87.                 break;
  88.               }
  89.             }
  90.  
  91.             cout << "x[i] Val: " << y[i] << endl;
  92.             if (x[i] == -1) {
  93.                 cout << "NO" << endl;
  94.                 return;
  95.             }
  96.           } else {
  97.             cout << "NO" << endl;
  98.             return;
  99.           }
  100.         }
  101.      
  102.         cout << "YES" << endl;
  103.         vector<int> res = sort_indexes(unsortD);
  104.         int s = res.size();
  105.  
  106.         for(auto i = 0; i < s; i++) {
  107.           cout << x[res[i]-1] << " ";
  108.         }
  109.         cout << endl;
  110.  
  111.         for(auto i = 0; i < s; i++) {
  112.           cout << y[res[i]-1] << " ";
  113.         }
  114.         cout << endl;
  115.         return;
  116.       }
  117.      
  118.  
  119.       int32_t main()
  120.       {
  121.           ios_base::sync_with_stdio(false);
  122.           cin.tie(null);
  123.           int t; cin >> t;
  124.           while(t--) {
  125.             solve();
  126.           }
  127.           return 0;
  128.       }
Parsed in 0.046 seconds