第16回日本情報オリンピック 本選(過去問)から、その提出コードの解答例です。
AtCoderとは、コンテストを通じて、プログラミングやアルゴリズムを学習するサービスです。
atcoder.jp
プログラミングコンテストとは、「与えられた問題をいかに素早く、正確に」解くことができるかを競うものです。
「競技プログラミング」を略して、「競プロ」などと呼ばれています。
#A - フェーン現象 (Foehn Phenomena)
僕が作成、提出したコードは、以下のとおりです。
/* AtCoder Problems in C++ #A - フェーン現象 (Foehn Phenomena) https://atcoder.jp/contests/joi2017ho/tasks/joi2017ho_a 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; using ll=long long; ll s,t; ll f(ll x){ return -x*(x>0 ? s : t); } int main(void){ ll n,q; cin>>n>>q>>s>>t; ll ans=0; ll a[n+1],v[n+1]; for(ll i=0;i<=n;i++){ cin>>a[i]; ans+=f(v[i]=a[i]-(i ? a[i-1] : 0)); } while(q--){ ll x,y,z; cin>>x>>y>>z; cout<<(ans+=(v[x]+=z,f(v[x])-f(v[x]-z))+ (y<n ? (v[y+1]-=z,f(v[y+1])-f(v[y+1]+z)) : 0))<<endl; } return 0; }