Submission

Status:

--TTxxxxxx

Subtask/Task Score:

0/100

Score: 0

User: nik121416

Problemset: โชว์ของโลมา

Language: cpp

Time: 1.086 second

Submitted On: 2026-03-16 14:14:20

#include <bits/stdc++.h>
using namespace std;

int n ;
void p(vector<vector<int>> &adj){
    for(int i = 0 ; i < n;i++){
        for(int j = 0 ; j < n;j++){
            cout << adj[i][j] << ' ';
        }
        cout << '\n';
    }
    cout << '\n';
}

void pp(vector<vector<bool>> &adj){
    for(int i = 0 ; i < n;i++){
        for(int j = 0 ; j < n;j++){
            cout << adj[i][j] << ' ';
        }
        cout << '\n';
    }
    cout << '\n';
}

int main(){

    cin >>n;
    vector<vector<int>> adj(n,vector<int>(n,1));
    vector<vector<bool>> vis(n,vector<bool>(n,false));
    queue<pair<int,int>> q;
    q.push({0,0});
    // vis[0][0] = true;
    // int num = 1;
    int num =  0;
    while(!q.empty()){
        int i = q.front().first;
        int j = q.front().second;
        q.pop();
        if(!vis[i][j]){vis[i][j] = true;
        adj[i][j] = num+=1;}
        for(int a = 0;a < n;a++){
            if(j + 1 < n && vis[i][j+1] == false){
                adj[i][j+1] = num +=1;
                vis[i][j+1] = true;
                j+=1;
            }
        }
        p(adj);
        pp(vis);
        if(i + 1 < n && !vis[i+1][j])i+=1;
        if(!vis[i][j]){adj[i][j] = num+=1;
        vis[i][j] = true;}
        for(int a = 0;a < n;a++){
            if(j - 1 >= 0 && !vis[i][j-1]){
                adj[i][j-1] = num+=1;
                vis[i][j-1] = true;
                j-=1;
            }
        }
        p(adj);
        pp(vis);
        for(int a = 0;a < n;a++){
            if(i+1 < n && !vis[i+1][j]){
                adj[i+1][j] = num+=1;
                vis[i+1][j] = true;
                i+=1;
            }
        }
        p(adj);
        pp(vis);
        if(j + 1 < n && !vis[i][j+1])j+=1;
        if(!vis[i][j]){adj[i][j] = num+=1;
        vis[i][j] = true;}
        for(int a = 0;a < n;a++){
            if(i-1 >=0 && !vis[i-1][j]){
                adj[i-1][j] = num +=1;
                vis[i-1][j] = true;
                i-=1;
            }
        }
        p(adj);
        pp(vis);
        for(int aa = 0 ;aa< n;aa++){
            for(int bb = 0 ; bb< n;bb++){
                if(!vis[aa][bb]){
                    q.push({aa,bb});
                    break;
                }
            }
            if(!q.empty()){
                break;
            }
        }
    }
}