Advertisement
willy108

gcj r2 no trust p1

May 14th, 2022
661
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. for(int i = 1; i<=n; i++){
  2.         for(int j = 1; j<=n; j++){
  3.  
  4.             if((arr[i][j] - 1) + abs(mid - i) + abs(mid - j) == k){
  5.                 int oi = i, oj = j;
  6.                 change.pb(arr[i][j]);
  7.                 int dx = (mid > i) ? 1 : -1;
  8.                 int dy = (mid > j) ? 1 : -1;
  9.                 if(dx + dy == 0){
  10.                     while(i != mid){
  11.                         //cout << i << " ";
  12.                         /*if(arr[i][j] + 1 != arr[i+dx][j]){*/
  13.                             change.pb(arr[i+dx][j]);
  14.                         /*}*/
  15.                         i += dx;
  16.                     }
  17.                     assert(i == mid);
  18.                     //change.pb(arr[i][j]);
  19.                     while(j != mid){
  20.                         /*if(arr[i][j] + 1 != arr[i][j + dy]){*/
  21.                             change.pb(arr[i][j+dy]);
  22.                         /*}*/
  23.                         j += dy;
  24.                     }
  25.                 }else{
  26.                     //cout << "wave\n";
  27.                     while(j != mid){
  28.                         //cout << j << " ";
  29.                         /*if(arr[i][j] + 1 != arr[i][j + dy]){*/
  30.                             change.pb(arr[i][j+dy]);
  31.                         /*}*/
  32.                         j += dy;
  33.                     }
  34.                     assert(mid == j);
  35.                     /*change.pb(arr[i][j]);*/
  36.                     while(i != mid){
  37.                         /*if(arr[i][j] + 1 != arr[i+dx][j]){*/
  38.                             change.pb(arr[i+dx][j]);
  39.                         /*}*/
  40.                         i += dx;
  41.                     }
  42.                 }
  43.                 vector<int> tmp = change;
  44.                 change.clear();
  45.                 vector<pair<int, int>> ans;
  46.                 for(int i = 0; i<sz(tmp); i++){
  47.                     int fl = 0;
  48.                     if(i > 0 && tmp[i] != tmp[i-1]+1) ans.pb(mp(tmp[i-1], tmp[i]));
  49.                     /*if(i < sz(tmp)-1 && tmp[i] != tmp[i+1]-1) fl++;*/
  50.                     /*if(fl) change.pb(tmp[i]);*/
  51.                 }
  52.                 int flag = 0;
  53.                 for(const auto& [x, y] : ans){
  54.                     if(y < x){
  55.                         flag = 1;
  56.                         break;
  57.                     }
  58.                 }
  59.                 if(!flag){
  60.                     /*cerr << oi << " " << oj << "\n";*/
  61.                     cout << sz(ans) << "\n";
  62.                     for(int d = 0; d<sz(ans); d++){
  63.                         cout << ans[d].first << " " << ans[d].second << "\n";
  64.                     }          
  65.                     return ;
  66.                 }
  67.                 change.clear();
  68.                 i = oi, j= oj;
  69.             }
  70.         }
  71.     }
Advertisement
Advertisement
Advertisement
RAW Paste Data Copied
Advertisement