結果
問題 | No.1421 国勢調査 (Hard) |
ユーザー | LayCurse |
提出日時 | 2021-03-05 22:37:56 |
言語 | C++17 (gcc 12.3.0 + boost 1.83.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 4,474 bytes |
コンパイル時間 | 2,471 ms |
コンパイル使用メモリ | 218,308 KB |
実行使用メモリ | 8,568 KB |
最終ジャッジ日時 | 2024-10-07 03:22:17 |
合計ジャッジ時間 | 4,926 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 2 ms
7,624 KB |
testcase_01 | AC | 2 ms
7,628 KB |
testcase_02 | AC | 2 ms
7,628 KB |
testcase_03 | AC | 2 ms
7,624 KB |
testcase_04 | AC | 2 ms
6,816 KB |
testcase_05 | AC | 3 ms
7,624 KB |
testcase_06 | AC | 3 ms
7,620 KB |
testcase_07 | AC | 3 ms
7,620 KB |
testcase_08 | AC | 3 ms
7,624 KB |
testcase_09 | AC | 3 ms
7,628 KB |
testcase_10 | AC | 3 ms
7,624 KB |
testcase_11 | AC | 3 ms
7,624 KB |
testcase_12 | AC | 3 ms
7,620 KB |
testcase_13 | AC | 3 ms
6,820 KB |
testcase_14 | AC | 3 ms
7,624 KB |
testcase_15 | AC | 2 ms
7,504 KB |
testcase_16 | AC | 3 ms
7,628 KB |
testcase_17 | AC | 2 ms
7,620 KB |
testcase_18 | AC | 2 ms
6,820 KB |
testcase_19 | AC | 2 ms
7,628 KB |
testcase_20 | AC | 2 ms
7,628 KB |
testcase_21 | AC | 2 ms
7,756 KB |
testcase_22 | WA | - |
testcase_23 | WA | - |
testcase_24 | WA | - |
testcase_25 | WA | - |
testcase_26 | WA | - |
testcase_27 | WA | - |
testcase_28 | WA | - |
testcase_29 | WA | - |
testcase_30 | WA | - |
testcase_31 | WA | - |
ソースコード
#pragma GCC optimize ("Ofast") #include<bits/stdc++.h> using namespace std; inline int my_getchar_unlocked(){ static char buf[1048576]; static int s = 1048576; static int e = 1048576; if(s == e && e == 1048576){ e = fread_unlocked(buf, 1, 1048576, stdin); s = 0; } if(s == e){ return EOF; } return buf[s++]; } inline void rd(int &x){ int k; int m=0; x=0; for(;;){ k = my_getchar_unlocked(); if(k=='-'){ m=1; break; } if('0'<=k&&k<='9'){ x=k-'0'; break; } } for(;;){ k = my_getchar_unlocked(); if(k<'0'||k>'9'){ break; } x=x*10+k-'0'; } if(m){ x=-x; } } struct MY_WRITER{ char buf[1048576]; int s; int e; MY_WRITER(){ s = 0; e = 1048576; } ~MY_WRITER(){ if(s){ fwrite_unlocked(buf, 1, s, stdout); } } } ; MY_WRITER MY_WRITER_VAR; void my_putchar_unlocked(int a){ if(MY_WRITER_VAR.s == MY_WRITER_VAR.e){ fwrite_unlocked(MY_WRITER_VAR.buf, 1, MY_WRITER_VAR.s, stdout); MY_WRITER_VAR.s = 0; } MY_WRITER_VAR.buf[MY_WRITER_VAR.s++] = a; } inline void wt_L(char a){ my_putchar_unlocked(a); } inline void wt_L(int x){ int s=0; int m=0; char f[10]; if(x<0){ m=1; x=-x; } while(x){ f[s++]=x%10; x/=10; } if(!s){ f[s++]=0; } if(m){ my_putchar_unlocked('-'); } while(s--){ my_putchar_unlocked(f[s]+'0'); } } int N; int M; int A[50]; int B[10000][50]; int Y[10000]; int X[50]; int mat[10000][50]; int x[50]; int y[10000]; int main(){ int b; int i; int j; int k; int r; int c; rd(N); rd(M); for(i=(0);i<(M);i++){ rd(A[i]); { int Q5VJL1cS; for(Q5VJL1cS=(0);Q5VJL1cS<(A[i]);Q5VJL1cS++){ rd(B[i][Q5VJL1cS]);B[i][Q5VJL1cS] += (-1); } } rd(Y[i]); } for(b=(0);b<(30);b++){ for(i=(0);i<(M);i++){ for(j=(0);j<(N);j++){ mat[i][j] = 0; } } for(i=(0);i<(M);i++){ for(j=(0);j<(A[i]);j++){ mat[i][B[i][j]] ^= 1; } } for(i=(0);i<(M);i++){ if(((Y[i]) &(1<<(b)))){ y[i] =1; } else{ y[i] =0; } } r = 0; for(c=(0);c<(N);c++){ if(r >= M){ break; } for(k=(r);k<(M);k++){ if(mat[k][c]){ break; } } if(k == M){ continue; } if(k != r){ for(i=(0);i<(N);i++){ swap(mat[r][i], mat[k][i]); } swap(y[r], y[k]); } for(k=(r+1);k<(M);k++){ if(mat[k][c]){ for(i=(0);i<(N);i++){ mat[k][i] ^= mat[r][i]; } y[k] ^= y[r]; } } r++; } for(i=(0);i<(N);i++){ x[i] = 0; } for(r=(M)-1;r>=(0);r--){ for(i=(0);i<(N);i++){ if(mat[r][i]){ break; } } if(i==N && y[r]){ wt_L(-1); wt_L('\n'); return 0; } if(i==N){ continue; } x[i] = y[r]; for(j=(i+1);j<(N);j++){ x[i] ^= (mat[r][j] * x[j]); } } for(i=(0);i<(N);i++){ X[i] |= (x[i] << b); } } { int H31bcJ8S; for(H31bcJ8S=(0);H31bcJ8S<(N);H31bcJ8S++){ wt_L(X[H31bcJ8S]); wt_L('\n'); } } return 0; } // cLay version 20210227-1 // --- original code --- // int N, M, A[50], B[1d4][50], Y[1d4], X[50]; // int mat[1d4][50], x[50], y[1d4]; // { // int i, j, k, r, c; // rd(N,M); // rep(i,M) rd(A[i], (B[i]--)(A[i]), Y[i]); // rep(b,30){ // rep(i,M) rep(j,N) mat[i][j] = 0; // rep(i,M) rep(j,A[i]) mat[i][B[i][j]] ^= 1; // rep(i,M) y[i] = if[BIT_ith(Y[i], b), 1, 0]; // r = 0; // // wt("---"); // // rep(i,M) wt(mat[i](N), ":", y[i]); // rep(c,N){ // if(r >= M) break; // rep(k,r,M) if(mat[k][c]) break; // if(k == M) continue; // if(k != r){ // rep(i,N) swap(mat[r][i], mat[k][i]); // swap(y[r], y[k]); // } // rep(k,r+1,M) if(mat[k][c]){ // rep(i,N) mat[k][i] ^= mat[r][i]; // y[k] ^= y[r]; // } // r++; // } // // wt("+++"); // // rep(i,M) wt(mat[i](N), ":", y[i]); // // rep(i,N) x[i] = 0; // rrep(r,M){ // rep(i,N) if(mat[r][i]) break; // if(i==N && y[r]) wt(-1), return 0; // if(i==N) continue; // x[i] = y[r]; // rep(j,i+1,N) x[i] ^= (mat[r][j] * x[j]); // } // rep(i,N) X[i] |= (x[i] << b); // } // wtLn(X(N)); // }