結果
| 問題 |
No.1990 Candy Boxes
|
| コンテスト | |
| ユーザー |
Rubikun
|
| 提出日時 | 2024-07-20 19:36:52 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 3,130 bytes |
| コンパイル時間 | 2,028 ms |
| コンパイル使用メモリ | 198,196 KB |
| 最終ジャッジ日時 | 2025-02-23 17:19:54 |
|
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 5 |
| other | AC * 70 WA * 1 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
template<class T>bool chmax(T &a, const T &b) { if (a<b) { a=b; return true; } return false; }
template<class T>bool chmin(T &a, const T &b) { if (b<a) { a=b; return true; } return false; }
#define all(x) (x).begin(),(x).end()
#define fi first
#define se second
#define mp make_pair
#define si(x) int(x.size())
const int mod=998244353,MAX=300005,INF=15<<26;
int main(){
std::ifstream in("text.txt");
std::cin.rdbuf(in.rdbuf());
cin.tie(0);
ios::sync_with_stdio(false);
/*
for(int N=1;N<=10;N++){
set<vector<int>> SE,SE2;
queue<vector<int>> Q;
vector<int> A(N+2);
SE.insert(A);
Q.push(A);
while(!Q.empty()){
auto S=Q.front();Q.pop();
for(int i=1;i<=N;i++){
if(S[i-1]%2==S[i+1]%2){
int sv=S[i];
S[i]++;
if(S[i]==3) S[i]=1;
if(!SE.count(S)){
SE.insert(S);
Q.push(S);
}
S[i]=sv;
}
}
}
SE2.insert(A);
Q.push(A);
while(!Q.empty()){
auto S=Q.front();Q.pop();
for(int i=1;i<=N;i++){
int sv=S[i];
S[i]++;
if(S[i]==3) S[i]=1;
if(!SE2.count(S)){
SE2.insert(S);
Q.push(S);
}
S[i]=sv;
}
}
int c=0,d=0;
for(auto X:SE2){
bool f=true;
for(int i=1;i<=N;i++) if(X[i]==0) f=false;
if(!f) continue;
if(!SE.count(X)){
c++;
//for(int x:X) cout<<x<<" ";
//cout<<endl;
}else{
for(int x:X) cout<<x<<" ";
cout<<" : ";
for(int i=0;i+1<si(X);i++) cout<<((X[i]^X[i+1])&1)<<" ";
cout<<endl;
d++;
}
}
cout<<c<<" "<<d<<endl;
}
*/
ll N;cin>>N;
vector<ll> A(N);
for(int i=0;i<N;i++) cin>>A[i];
vector<ll> B;
for(int i=0;i<N-1;i++){
B.push_back(A[i]);
A[i+1]-=A[i];
}
if(A.back()){
cout<<"No\n";
return 0;
}
for(ll x:B){
if(x<0){
cout<<"No\n";
return 0;
}
}
int i=0;
while(i<si(B)){
if(B[i]==0) i++;
else{
int j=i;
while(j<si(B)&&B[j]) j++;
vector<int> S;
S.push_back(B[i]&1);
for(int k=i+1;k<j;k++) S.push_back((B[k-1]^B[k])&1);
S.push_back(B[j-1]&1);
int z=0;
for(int k=0;k<si(S);k++){
if(k%2==0) z+=S[k];
else z-=S[k];
}
if(z){
cout<<"No\n";
return 0;
}
i=j;
}
}
cout<<"Yes\n";
}
Rubikun