Untitled

 avatar
unknown
plain_text
4 months ago
1.7 kB
2
Indexable
#include <bits/stdc++.h>
using namespace std ;
#define For(n) for(long long i = 0; i < n; i++)
#define endl '\n'
#define int long long
#define ll long long
#define fast() ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
//***********************Nah I would win*************************/ 
int n,m,sum;map<pair<int,int>,int> vis;
vector<int> ans;
int sign = 1;
void solve (vector<vector<int>> &v,int x,int y, char state){
    if(x > n || y > n || x <= 0 || y <= 0)return;    
    // cout <<"beg point "<< x<<' '<<y << endl;
    if(state == 'u'){
        int i = x , j = y;
        for(; i <= n && j <= n  && i > 0  &&  i > 0; i-= 1 ,j += 1){
            ans.push_back(v[i][j]);
            vis[{i,j}]++;
            // cout << i << ' '<< j << endl;
        }
        if(vis[{1,n}] && vis[{n,1}])sign = -1;
        if(sign == 1)solve(v,y,x+1,'d');
        else         solve(v,y+1,x,'d');
    }
    else {int i = x , j = y;
        for( ;i <= n && j <= n  && i > 0  && j > 0 ; i += 1 ,j -= 1){
            ans.push_back(v[i][j]);
            vis[{i,j}]++;
            // cout << i << ' '<< j << endl;
        } 
        if(vis[{1,n}] && vis[{n,1}])sign = -1;
        if(sign == 1)solve(v,y+1,x,'u');
        else         solve(v,y,x+1,'u');       
    }
}
void Gojo(){
    cin>>n;
    vector<vector<int>> v(n+1,vector<int>(n+1));    
    for(int i = 1 ; i <= n ;i++)
        for(int j = 1; j <= n ; j++){
            cin>>v[i][j];
        }
    solve(v,1,1,'u');
    int cnt = 0;
    For(n*n){
        cout << ans[i] <<' ';
        cnt ++;
        if(cnt % n == 0)cout << endl;
    }

}
signed main ()
{// 
    fast()      
    int Tt = 1;
    cin>>Tt;
    while (Tt--){
        Gojo();
        // cout << endl ;       
    }    
}
Editor is loading...
Leave a Comment