結果
問題 | No.2702 Nand Nor Matrix |
ユーザー |
![]() |
提出日時 | 2024-03-29 22:33:21 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 633 ms / 2,000 ms |
コード長 | 2,100 bytes |
コンパイル時間 | 6,088 ms |
コンパイル使用メモリ | 200,068 KB |
最終ジャッジ日時 | 2025-02-20 15:16:27 |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 51 |
ソースコード
#include <bits/stdc++.h>using namespace std;int nand(int x, int y) {return (x == 1 && y == 1 ? 0 : 1);}int nor(int x, int y) {return (x == 0 && y == 0 ? 1 : 0);}void experiment() {int N;cin >> N;vector<int> A(N), B(N);for(int i = 0; i < N; i++) cin >> A[i];for(int i = 1; i < N; i++) cin >> B[i];vector X(N, vector<int>(N));vector Y(N, vector<int>(N));for(int i = 0; i < N; i++) {for(int j = 0; j < N; j++) {if(i == 0) X[i][j] = A[j];if(i != 0 && j == 0) X[i][j] = B[i];}}for(int t = 1; t < 30; t++) {for(int i = 0; i < N; i++) {for(int j = 0; j < N; j++) {if(i == 0 || j == 0) Y[i][j] = X[i][j];if(i != 0 && j != 0 && X[i][j] == 0) Y[i][j] = nand(X[i-1][j], X[i][j-1]);if(i != 0 && j != 0 && X[i][j] == 1) Y[i][j] = nor(X[i-1][j], X[i][j-1]);}}swap(X, Y);cout << "---- " << t << " ----" << endl;for(int i = 0; i < N; i++) {for(int j = 0; j < N; j++) {cout << X[i][j] << " ";}cout << endl;}cout << "-----------" << endl;}}int main() {int N;cin >> N;vector<int> A(N), B(N);for(int i = 0; i < N; i++) cin >> A[i];for(int i = 1; i < N; i++) cin >> B[i];// コーナーケースの処理if(N == 1) {int Q;cin >> Q;for(int q = 0; q < Q; q++) {cout << A[0] << endl;}return 0;}// 0101... が最大でいくつ連続するかlong long alt_a = 0, alt_b = 0;if(A[1] == B[1]) {alt_a = alt_b = 1;for(int i = 2; i < N; i++) {if(A[i] != A[i-1]) alt_a++;else break;}for(int i = 2; i < N; i++) {if(B[i] != B[i-1]) alt_b++;else break;}}// クエリに答えるint Q;cin >> Q;for(int q = 0; q < Q; q++) {int R, C;long long T;cin >> T >> R >> C;R--, C--;if(R == 0) {cout << A[C] << endl;}else if(C == 0) {cout << B[R] << endl;}else if(R <= alt_b && C <= alt_a && R+C-1 <= T) {cout << (R+C-1+A[1])%2 << endl;}else {cout << T%2 << endl;}}}