アルゴ式(beta版)の「日本情報オリンピック (予選) 過去問」JOI 2019/2020 一次予選 (第 2 回)からの出典です。
algo-method.com
アルゴ式とは...
>・プログラミングや情報科学をコツコツ学べる「教科書」
>・学んだ内容をゲーム感覚で大量に実践できる「練習問題」
>の2つで構成される、Web上で完結した学習コンテンツです。
・問題 1: 試験
/* C++による「日本情報オリンピック (予選) 過去問」JOI 2019/2020 一次予選 (第 2 回)の解答例 問題 1: 試験 https://algo-method.com/tasks/387 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ vector<int> v(3); cin>>v[0]>>v[1]>>v[2]; sort(v.begin(),v.end(),greater<int>()); cout<<v[0]+v[1]<<endl; return 0; }
・問題 2: 文字列の反転
/* C++による「日本情報オリンピック (予選) 過去問」JOI 2019/2020 一次予選 (第 2 回)の解答例 問題 2: 文字列の反転 https://algo-method.com/tasks/388 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ int n,a,b; string s; cin>>n>>a>>b>>s; string t=s.substr(a-1,b-a+1); s.erase(a-1,b-a+1); reverse(t.begin(),t.end()); s.insert(a-1,t); cout<<s<<endl; return 0; }
・問題 3: 最頻値
/* C++による「日本情報オリンピック (予選) 過去問」JOI 2019/2020 一次予選 (第 2 回)の解答例 問題 3: 最頻値 https://algo-method.com/tasks/389 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ int n,m; cin>>n>>m; vector<int> a(n); for(int i=0;i<n;i++){ cin>>a[i]; } vector<int> b(m); for(int i=0;i<m;i++){ int cnt=0; for(int j=0;j<n;j++){ if(i+1==a[j]){ ++cnt; } } b[i]=cnt; } sort(b.rbegin(),b.rend()); cout<<b[0]<<endl; return 0; }
設問の出典は、情報科学をコツコツ積み立てて学習できるサービス「アルゴ式(beta版)」です。
algo-method.com
またAtCoder Problemsにも同じ問題が公開されています。