AtCoder Beginner Contest 050/AtCoder Regular Contest 066
はい。
https://beta.atcoder.jp/contests/abc050
A - Addition and Subtraction Easy
C++14
#include<bits/stdc++.h> using namespace std; int main(){ int n,m; char op[1]; scanf("%d %c %d",&n,&op,&m); printf("%d\n",op[0]=='+'?n+m:n-m); return 0; }
足し算引き算するのに標準入出力を頑張る。
B - Contest with Drinks Easy
C++14
#include<bits/stdc++.h> using namespace std; int main(){ int mod=1000000007; int n,m,chk,p,x; scanf("%d",&n); vector<int> t(n); for (auto&e:t) { scanf("%d",&e); } chk = accumulate(t.begin(),t.end(),0); scanf("%d",&m); for (int i=0;i<m;i++) { scanf("%d %d",&p,&x); printf("%d\n",chk-(t[p-1]-x)); } return 0; }
問題文のいいなりになって計算で大丈夫だと思う。。
C - Lining Up
C++14
#include<bits/stdc++.h> using namespace std; int main(){ int mod=1000000007; int n; long long ans=0; scanf("%d",&n); vector<int> a(n); for (auto&e:a) scanf("%d",&e); sort(a.begin(),a.end()); if (n%2) { for (int i=0;i<n;i++) { if (i==0 && a[i]==0) { ans=1; } else if (i==0 && a[i]!=0) { ans=0; break; } else if (i>0 && a[i]==i && a[i-1]==i) { ans*=2; ans%=mod; } else { ans=0; break; } i++; } } else { for (int i=1;i<n;i++) { if (i==1 && a[1]==1 && a[0]==1) { ans=2; } else if (i==1 && (a[i]!=1 || a[i-1]!=1)) { ans=0; break; } else if (i>1 && a[i]==i && a[i-1]==i) { ans*=2; ans%=mod; } else { ans=0; break; } i++; } } printf("%lld\n",ans); return 0; }
問題読んでサンプル眺めて、問題読んでサンプル眺めて。。。nが奇数だと0,2,2,4,4...で、偶数だと1,1,3,3,5,5...と数が出現することに気づく。ソレに合わせて解が2xになりそうなことに気づいて力技で解決するなどした。。