アルゴ式(beta版)の「日本情報オリンピック (予選) 過去問」JOI 2013/2014 予選 (前半)からの出典です。
algo-method.com
アルゴ式とは...
>・プログラミングや情報科学をコツコツ学べる「教科書」
>・学んだ内容をゲーム感覚で大量に実践できる「練習問題」
>の2つで構成される、Web上で完結した学習コンテンツです。
・問題 1: 平均点
/* C++による「日本情報オリンピック (予選) 過去問」JOI 2013/2014 予選 (前半)の解答例 問題 1: 平均点 https://algo-method.com/tasks/573 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ vector<int> score(5); int ans=0; for(int i=0;i<5;i++){ cin>>score[i]; ans+=((score[i]<40) ? 40 : score[i]); } ans/=5; cout<<ans<<endl; return 0; }
・問題 2: 投票
/* C++による「日本情報オリンピック (予選) 過去問」JOI 2013/2014 予選 (前半)の解答例 問題 2: 投票 https://algo-method.com/tasks/574 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ int n,m; cin>>n>>m; vector<pair<int,int>> a(n); vector<int> b(m); for(int i=0;i<n;i++){ int j; cin>>j; a[i].first=j; a[i].second=0; } for(int i=0;i<m;i++){ cin>>b[i]; for(int j=0;j<n;j++){ if(a[j].first<=b[i]){ a[j].second+=1; break; } } } vector<pair<int,int>> ans(n); for(int i=0;i<n;i++){ ans[i].first=a[i].second; ans[i].second=i+1; } sort(ans.rbegin(),ans.rend()); cout<<ans[0].second<<endl; return 0; }
・問題 3: 超都観光
/* C++による「日本情報オリンピック (予選) 過去問」JOI 2013/2014 予選 (前半)の解答例 問題 3: 超都観光 https://algo-method.com/tasks/575 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ int w,h,n; cin>>w>>h>>n; vector<int> x(n); vector<int> y(n); for(int i=0;i<n;i++){ cin>>x[i]>>y[i]; } int ans=0; for(int i=1;i<n;i++){ int xx=x[i]-x[i-1]; int yy=y[i]-y[i-1]; if(xx*yy>=0){ ans+=max(abs(xx),abs(yy)); }else{ ans+=(abs(xx)+abs(yy)); } } cout<<ans<<endl; return 0; }
設問の出典は、情報科学をコツコツ積み立てて学習できるサービス「アルゴ式(beta版)」です。
algo-method.com