結果

問題 No.3732 Labyrinth Maker
コンテスト
ユーザー karinohito
提出日時 2026-09-19 16:05:07
言語 C++23
(gcc 15.3.0 + boost 1.92.0 + ACL)
コンパイル:
g++-15 -O2 -lm -std=c++23 -Wuninitialized -DONLINE_JUDGE -o a.out _filename_
実行:
./a.out
結果
AC  
実行時間 88 ms / 2,000 ms
+ 311µs
コード長 1,457 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 2,773 ms
コンパイル使用メモリ 353,108 KB
実行使用メモリ 35,564 KB
最終ジャッジ日時 2026-09-19 16:05:40
合計ジャッジ時間 30,904 ms
ジャッジサーバーID
(参考情報)
judge3_0 / judge5_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 59
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

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

void solve(){
    int N;
    cin>>N;
    ll S=0;
    vector<vector<ll>> A(N,vector<ll>(N));
    for(int i=0;i<N;i++)for(int j=0;j<N;j++){
        cin>>A[i][j];
        S+=A[i][j];
    }
    if(S%N!=0){
        cout<<-1<<"\n";
        return;
    }
    vector<array<ll,2>> G;
    int y=0,x=0;
    G.push_back({y,x});
    for(int i=0;i<N-1;i++){
        y++;
        G.push_back({y,x});
    }
    x++;
    G.push_back({y,x});
    for(int i=N-1;i>=N%2;i--){
        for(int j=0;j<N-2;j++){
            x+=((N-i)%2?1:-1);
            G.push_back({y,x});
        }
        y--;
        if(i!=N%2)G.push_back({y,x});
    }
    // for(auto [y,x]:G)cout<<y<<" "<<x<<endl;
    vector<vector<int>> C(N);
    C[0].push_back(-1);
    ll s=0;
    vector<vector<int>> AN(N,vector<int>(N,N));
    for(int i=0;i<G.size();i++){
        s+=A[G[i][0]][G[i][1]];
        s%=N;
        C[s].push_back(i);
        if(C[s].size()==N){
            for(int k=0;k<N-1;k++){
                for(int j=C[s][k]+1;j<=C[s][k+1];j++){
                    AN[G[j][0]][G[j][1]]=k+1;
                }
            }
            for(int a=0;a<N;a++){
                for(int b=0;b<N;b++){
                    cout<<AN[a][b]<<" \n"[b==N-1];
                }
            }
            return;
        }
    }
}

int main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int T;
    cin>>T;
    while(T--)solve();
}
0