アルゴ式(beta版)の「日本情報オリンピック (予選) 過去問」JOI 2019/2020 一次予選 (第 1 回)からの出典です。
algo-method.com
アルゴ式とは...
>・プログラミングや情報科学をコツコツ学べる「教科書」
>・学んだ内容をゲーム感覚で大量に実践できる「練習問題」
>の2つで構成される、Web上で完結した学習コンテンツです。
・問題 1: 3 つの整数
/* C++による「日本情報オリンピック (予選) 過去問」JOI 2019/2020 一次予選 (第 1 回)の解答例 問題 1: 3 つの整数 https://algo-method.com/tasks/384 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ int one=0,two=0; for(int i=0;i<3;i++){ int j; cin>>j; if(j==1){ one++; }else{ two++; } } cout<<((one>two) ? 1 : 2)<<endl; return 0; }
・問題 2: 母音を数える
/* C++による「日本情報オリンピック (予選) 過去問」JOI 2019/2020 一次予選 (第 1 回)の解答例 問題 2: 母音を数える https://algo-method.com/tasks/385 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ char c[5]={'a','i','u','e','o'}; int n; string s; cin>>n>>s; bool tf=false; int cnt=0; for(int i=0;i<n;i++){ for(int j=0;j<5;j++){ if(s[i]==c[j]){ cnt++; } } } cout<<cnt<<endl; return 0; }
・問題 3: マージ
/* C++による「日本情報オリンピック (予選) 過去問」JOI 2019/2020 一次予選 (第 1 回)の解答例 問題 3: マージ https://algo-method.com/tasks/386 提出コードの解答例 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); for(int i=0;i<n;i++){ cin>>a[i]; } for(int i=0;i<m;i++){ cin>>b[i]; } vector<int> c; while(1){ if(a.empty() && b.empty()){ break; } if(a.empty()){ c.push_back(b[0]); b.erase(b.begin()); }else if(b.empty()){ c.push_back(a[0]); a.erase(a.begin()); }else{ if(a[0]>b[0]){ c.push_back(b[0]); b.erase(b.begin()); }else{ c.push_back(a[0]); a.erase(a.begin()); } } } for(int i=0;i<c.size();i++){ cout<<c[i]<<endl; } return 0; }
設問の出典は、情報科学をコツコツ積み立てて学習できるサービス「アルゴ式(beta版)」です。
algo-method.com
またAtCoder Problemsにも同じ問題が公開されています。