paizaラーニングのレベルアップ問題集「線形探索メニュー」からの出典です。
paiza.jp
C++による「【特殊な探索】 成績優秀者の列挙 2」問題集と、それらの提出コードの解答例です。
僕が作成、提出したコードは、以下のとおりです。
・STEP: 1 偶数の探索
/* C++による「【特殊な探索】 成績優秀者の列挙 2」問題集 STEP: 1 偶数の探索 https://paiza.jp/works/mondai 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ int n; cin>>n; vector<int> a(n); for(int i=0;i<n;i++){ cin>>a[i]; } for(int i=0;i<n;i++){ if(a[i]%2==0){ cout<<i+1<<endl; return 0; } } }
・STEP: 2 奇数の探索
/* C++による「【特殊な探索】 成績優秀者の列挙 2」問題集 STEP: 2 奇数の探索 https://paiza.jp/works/mondai 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ int n; cin>>n; vector<int> a(n); for(int i=0;i<n;i++){ cin>>a[i]; } for(int i=n-1;i>=0;i--){ if(a[i]%2==1){ cout<<i+1<<endl; return 0; } } }
・STEP: 3 条件付き最小値
/* C++による「【特殊な探索】 成績優秀者の列挙 2」問題集 STEP: 3 条件付き最小値 https://paiza.jp/works/mondai 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ int n,k; cin>>n; vector<int> a(n),b; for(int i=0;i<n;i++){ cin>>a[i]; } cin>>k; for(int i=0;i<n;i++){ if(a[i]>=k){ b.push_back(a[i]); } } sort(b.begin(),b.end()); cout<<b[0]<<endl; return 0; }
・STEP: 4 条件付き最大値
/* C++による「【特殊な探索】 成績優秀者の列挙 2」問題集 STEP: 4 条件付き最大値 https://paiza.jp/works/mondai 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ int n,k; cin>>n; vector<int> a(n),b; for(int i=0;i<n;i++){ cin>>a[i]; } cin>>k; for(int i=0;i<n;i++){ if(a[i]<=k){ b.push_back(a[i]); } } sort(b.begin(),b.end(),greater<int>()); cout<<b[0]<<endl; return 0; }
・STEP: 5 点と点の距離
/* C++による「【特殊な探索】 成績優秀者の列挙 2」問題集 STEP: 5 点と点の距離 https://paiza.jp/works/mondai 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ int n,k,cnt=0; cin>>n; vector<int> x(n),y(n); for(int i=0;i<n;i++){ cin>>x[i]>>y[i]; } cin>>k; for(int i=0;i<n;i++){ int dis1=abs(x[i]-x[n-1]); int dis2=abs(y[i]-y[n-1]); int dis=dis1+dis2; if(dis<=k){ cnt++; } } cout<<cnt<<endl; return 0; }
・STEP: 6 長方形に含まれる点
/* C++による「【特殊な探索】 成績優秀者の列挙 2」問題集 STEP: 6 長方形に含まれる点 https://paiza.jp/works/mondai 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ int n; cin>>n; vector<int> x(n),y(n); for(int i=0;i<n;i++){ cin>>x[i]>>y[i]; } int xs,xt,ys,yt; cin>>xs>>xt>>ys>>yt; int cnt=0; for(int i=0;i<n;i++){ if((xs<=x[i] && x[i]<=xt) && (ys<=y[i] && y[i]<=yt)){ cnt++; } } cout<<cnt<<endl; return 0; }
・STEP: 7 成績優秀者の列挙 1
/* C++による「【特殊な探索】 成績優秀者の列挙 2」問題集 STEP: 7 成績優秀者の列挙 1 https://paiza.jp/works/mondai 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ int n,k; cin>>n; vector<string> s(n); vector<int> t(n); for(int i=0;i<n;i++){ cin>>s[i]>>t[i]; } cin>>k; for(int i=0;i<n;i++){ if(t[i]>=k){ cout<<s[i]<<endl; } } return 0; }
・FINAL問題 【特殊な探索】 成績優秀者の列挙 2
/* C++による「【特殊な探索】 成績優秀者の列挙 2」問題集 FINAL問題 【特殊な探索】 成績優秀者の列挙 2 https://paiza.jp/works/mondai 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ int n,k,l; cin>>n; vector<string> s(n); vector<int> t(n); for(int i=0;i<n;i++){ cin>>s[i]>>t[i]; } cin>>k>>l; for(int i=0;i<n;i++){ if(k<=t[i] && t[i]<=l){ cout<<s[i]<<endl; } } return 0; }
paizaラーニングのレベルアップ問題集については、ユーザー同士で解答を教え合ったり、コードを公開したりするのは自由としています。
また授業や研修、教材などにも利用できるそうです。