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.  
  54.         for(auto i = 0; i < n; i++) {
  55.           if (!xUsed[d[i]]) {
  56.             xUsed[d[i]] = true;
  57.             x[i] = d[i];
  58.  
  59.             for(auto j = d[i]-1; j > 0; j--) {
  60.               if (!yUsed[j]) {
  61.                 yUsed[j] = true;
  62.                 y[i] = j;
  63.                 break;
  64.             }
  65.  
  66.             if (y[i] == -1) {
  67.               cout << "NO" << endl;
  68.               return;
  69.             }
  70.              
  71.           }
  72.            
  73.           } else if (!yUsed[d[i]]) {
  74.             yUsed[d[i]] = true;
  75.             y[i] = d[i];
  76.  
  77.             for(auto j = d[i]-1; j > 0; j--) {
  78.               if (!xUsed[j]) {
  79.                 xUsed[j] = true;
  80.                 x[i] = j;
  81.                 break;
  82.               }
  83.             }
  84.             if (x[i] == -1) {
  85.                 cout << "NO" << endl;
  86.                 return;
  87.             }
  88.           } else {
  89.             cout << "NO" << endl;
  90.             return;
  91.           }
  92.         }
  93.      
  94.         cout << "YES" << endl;
  95.         vector<int> res = sort_indexes(d);
  96.         int s = res.size();
  97.  
  98.         for(auto i = 0; i < s; i++) {
  99.           cout << res[i]-1 << " ";
  100.         }
  101.         cout << endl;
  102.  
  103.         for(auto i = 0; i < s; i++) {
  104.           cout << x[i] << " ";
  105.         }
  106.         cout << endl;
  107.  
  108.         for(auto i = 0; i < s; i++) {
  109.           cout << y[i] << " ";
  110.         }
  111.         cout << endl;
  112.    
  113.  
  114.         for(auto i = 0; i < s; i++) {
  115.           cout << x[res[i]-1] << " ";
  116.         }
  117.         cout << endl;
  118.  
  119.         for(auto i = 0; i < s; i++) {
  120.           cout << y[res[i]-1] << " ";
  121.         }
  122.         cout << endl;
  123.         return;
  124.       }
  125.      
  126.  
  127.       int32_t main()
  128.       {
  129.           ios_base::sync_with_stdio(false);
  130.           cin.tie(null);
  131.           int t; cin >> t;
  132.           while(t--) {
  133.             solve();
  134.           }
  135.           return 0;
  136.       }
Parsed in 0.047 seconds