結果
| 問題 |
No.2490 Escalator
|
| コンテスト | |
| ユーザー |
SSRS
|
| 提出日時 | 2023-09-29 22:46:31 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,179 bytes |
| コンパイル時間 | 3,283 ms |
| コンパイル使用メモリ | 233,600 KB |
| 最終ジャッジ日時 | 2025-02-17 03:28:12 |
|
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 21 WA * 52 |
ソースコード
#include <bits/stdc++.h>
#include <atcoder/convolution>
using namespace std;
const long long MOD = 998244353;
int main(){
int N;
cin >> N;
vector<int> A(N * 2);
for (int i = 0; i < N * 2; i++){
cin >> A[i];
if (A[i] == -1){
A[i] = 0;
}
}
vector<int> B(N * 4);
for (int i = 0; i < N * 2; i++){
B[i] = A[i];
B[N * 2 + i] = A[i];
}
vector<long long> A1(N * 2), A2(N * 2), A3(N * 2);
for (int i = 0; i < N * 2; i++){
A1[i] = A[i];
A2[i] = (long long) A[i] * A[i] % MOD;
A3[i] = (long long) A[i] * A[i] * A[i] % MOD;
}
vector<long long> B1(N * 4), B2(N * 4), B3(N * 4);
for (int i = 0; i < N * 4; i++){
B1[i] = B[i];
B2[i] = (long long) B[i] * B[i] % MOD;
B3[i] = (long long) B[i] * B[i] * B[i] % MOD;;
}
vector<long long> A1B3 = atcoder::convolution(A1, B3);
vector<long long> A2B2 = atcoder::convolution(A2, B2);
vector<long long> A3B1 = atcoder::convolution(A3, B1);
bool ok = false;
for (int i = N * 2; i < N * 4; i++){
if ((A1B3[i] - A2B2[i] * 2 + A3B1[i] + MOD * 2) % MOD == 0){
ok = true;
}
}
if (ok){
cout << "Yes" << endl;
} else {
cout << "No" << endl;
}
}
SSRS