結果
問題 | No.1055 牛歩 |
ユーザー |
![]() |
提出日時 | 2020-05-15 23:01:54 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,568 bytes |
コンパイル時間 | 2,625 ms |
コンパイル使用メモリ | 199,744 KB |
最終ジャッジ日時 | 2025-01-10 12:07:07 |
ジャッジサーバーID (参考情報) |
judge5 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 5 |
other | AC * 64 WA * 6 |
コンパイルメッセージ
main.cpp: In function ‘int main()’: main.cpp:14:34: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 14 | for(int i=0;i<M;i++)scanf("%d",&A[i]); | ~~~~~^~~~~~~~~~~~ main.cpp:27:22: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 27 | scanf("%d",&B[i]); | ~~~~~^~~~~~~~~~~~
ソースコード
#include <bits/stdc++.h> using namespace std; #define modulo 1000000007 #define mod(mod_x) ((((long long)mod_x+modulo))%modulo) #define Inf 10000000000000 int main(){ int N,M; cin>>N>>M; vector<int> A(M); for(int i=0;i<M;i++)scanf("%d",&A[i]); vector<int> X(M); for(int i=0;i<M;i++){ if(i==0)X[i] = A[i]; else X[i] = A[i]-A[i-1]; } X.push_back(N+1 - A.back()); int Q; cin>>Q; vector<int> B(Q); for(int i=0;i<Q;i++){ scanf("%d",&B[i]); B[i]--; } vector<bool> bridge(M,false); for(int i=0;i<Q;i++){ if(bridge[B[i]]){ bridge[B[i]]=false; } if((B[i]!=0&&bridge[B[i]-1])||(B[i]!=M-1&&bridge[B[i]+1])){ int pre = B[i]-1; int nxt = B[i]+1; if(X[B[i]]==2&&X[B[i]+1]==2){ bridge[B[i]]=true; continue; } if(X[B[i]]>X[B[i]+1]){ X[B[i]]--; X[B[i]+1]++; } else{ X[B[i]]++; X[B[i]+1]--; } while(pre>=0&&bridge[pre]){ if(X[pre]>X[pre+1]){ X[pre]--; X[pre+1]++; } else{ X[pre]++; X[pre+1]--; } bridge[pre]=false; pre--; } while(nxt<M&&bridge[nxt]){ if(X[nxt]>X[nxt+1]){ X[nxt]--; X[nxt+1]++; } else{ X[nxt]++; X[nxt+1]--; } bridge[nxt]=false; nxt++; } } else{ if(X[B[i]]==1&&X[B[i]+1]==1){ cout<<"NO"<<endl; return 0; } if(X[B[i]]==2&&X[B[i]+1]==2){ bridge[B[i]]=true; } else{ if(X[B[i]]>X[B[i]+1]){ X[B[i]]--; X[B[i]+1]++; } else{ X[B[i]]++; X[B[i]+1]--; } } } } cout<<"YES"<<endl; return 0; }