第14回日本情報オリンピック 予選(過去問)から、その提出コードの解答例です。
AtCoderとは、コンテストを通じて、プログラミングやアルゴリズムを学習するサービスです。
atcoder.jp
プログラミングコンテストとは、「与えられた問題をいかに素早く、正確に」解くことができるかを競うものです。
「競技プログラミング」を略して、「競プロ」などと呼ばれています。
#C - 気象予報士 (Weather Forecaster)
僕が作成、提出したコードは、以下のとおりです。
/* AtCoder Problems in C++ #C - 気象予報士 (Weather Forecaster) https://atcoder.jp/contests/joi2015yo/tasks/joi2015yo_c 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ int n,k; cin>>n>>k; vector<int> num(k+1); for(int i=0;i<k;i++){ cin>>num[i]; } num[k]=1000000000; sort(num.begin(),num.end()); if(num[0]==0){ int ans=0; for(int i=1;i<k;i++){ int cnt=1; int j=0; for(int l=i;l<k;l++){ if(num[l+1]==num[l]+1){ cnt++; ans=max(ans,cnt); continue; }else if(num[l+1]==num[l]+2 && j<1){ cnt+=2; j++; ans=max(ans,cnt); continue; } break; } } cout<<ans<<endl; }else{ int ans=0; for(int i=0;i<k;i++){ int cnt=1; for(int l=i;l<k;l++){ if(num[l+1]==num[l]+1){ cnt++; ans=max(ans,cnt); }else{ break; } } } cout<<ans<<endl; } return 0; }