アルゴ式(beta版)の「日本情報オリンピック (予選) 過去問」JOI 2020/2021 一次予選 (第 1 回)からの出典です。
algo-method.com
アルゴ式とは...
>・プログラミングや情報科学をコツコツ学べる「教科書」
>・学んだ内容をゲーム感覚で大量に実践できる「練習問題」
>の2つで構成される、Web上で完結した学習コンテンツです。
・問題 1: 2 番目に大きい整数
/* C++による「日本情報オリンピック (予選) 過去問」JOI 2020/2021 一次予選 (第 1 回)の解答例 問題 1: 2 番目に大きい整数 https://algo-method.com/tasks/371 提出コードの解答例 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()); cout<<v[1]<<endl; return 0; }
・問題 2: JOI ソート
/* C++による「日本情報オリンピック (予選) 過去問」JOI 2020/2021 一次予選 (第 1 回)の解答例 問題 2: JOI ソート https://algo-method.com/tasks/372 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ int n; string s; cin>>n>>s; sort(s.begin(),s.end()); int j=0,o=0,i=0; for(int k=0;k<n;k++){ if(s[k]=='J'){ j++; }else if(s[k]=='O'){ o++; }else{ i++; } } for(int k=0;k<j;k++){ cout<<"J"; } for(int k=0;k<o;k++){ cout<<"O"; } for(int k=0;k<i;k++){ cout<<"I"; } cout<<endl; return 0; }
・問題 3: 共通要素
/* C++による「日本情報オリンピック (予選) 過去問」JOI 2020/2021 一次予選 (第 1 回)の解答例 問題 3: 共通要素 https://algo-method.com/tasks/373 提出コードの解答例 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),b(m),v; for(int i=0;i<n;i++){ cin>>a[i]; } for(int i=0;i<m;i++){ cin>>b[i]; } sort(a.begin(),a.end()); sort(b.begin(),b.end()); set_intersection(a.begin(),a.end(),b.begin(),b.end(),back_inserter(v)); v.erase(unique(v.begin(),v.end()),v.end()); for(int i=0;i<v.size();i++){ cout<<v[i]<<endl; } return 0; }
設問の出典は、情報科学をコツコツ積み立てて学習できるサービス「アルゴ式(beta版)」です。
algo-method.com
またAtCoder Problemsにも同じ問題が公開されています。