Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- for(int i = 1; i<=n; i++){
- for(int j = 1; j<=n; j++){
- if((arr[i][j] - 1) + abs(mid - i) + abs(mid - j) == k){
- int oi = i, oj = j;
- change.pb(arr[i][j]);
- int dx = (mid > i) ? 1 : -1;
- int dy = (mid > j) ? 1 : -1;
- if(dx + dy == 0){
- while(i != mid){
- //cout << i << " ";
- /*if(arr[i][j] + 1 != arr[i+dx][j]){*/
- change.pb(arr[i+dx][j]);
- /*}*/
- i += dx;
- }
- assert(i == mid);
- //change.pb(arr[i][j]);
- while(j != mid){
- /*if(arr[i][j] + 1 != arr[i][j + dy]){*/
- change.pb(arr[i][j+dy]);
- /*}*/
- j += dy;
- }
- }else{
- //cout << "wave\n";
- while(j != mid){
- //cout << j << " ";
- /*if(arr[i][j] + 1 != arr[i][j + dy]){*/
- change.pb(arr[i][j+dy]);
- /*}*/
- j += dy;
- }
- assert(mid == j);
- /*change.pb(arr[i][j]);*/
- while(i != mid){
- /*if(arr[i][j] + 1 != arr[i+dx][j]){*/
- change.pb(arr[i+dx][j]);
- /*}*/
- i += dx;
- }
- }
- vector<int> tmp = change;
- change.clear();
- vector<pair<int, int>> ans;
- for(int i = 0; i<sz(tmp); i++){
- int fl = 0;
- if(i > 0 && tmp[i] != tmp[i-1]+1) ans.pb(mp(tmp[i-1], tmp[i]));
- /*if(i < sz(tmp)-1 && tmp[i] != tmp[i+1]-1) fl++;*/
- /*if(fl) change.pb(tmp[i]);*/
- }
- int flag = 0;
- for(const auto& [x, y] : ans){
- if(y < x){
- flag = 1;
- break;
- }
- }
- if(!flag){
- /*cerr << oi << " " << oj << "\n";*/
- cout << sz(ans) << "\n";
- for(int d = 0; d<sz(ans); d++){
- cout << ans[d].first << " " << ans[d].second << "\n";
- }
- return ;
- }
- change.clear();
- i = oi, j= oj;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement