Aizu Online Judge(AOJ)の過去問から、その提出コードの解答例です。
・問題 "Equal Range"
https://onlinejudge.u-aizu.ac.jp/problems/ITP2_6_A
要素が昇順にソートされた数列 A={a0,a1,...,an−1}に対して、クエリとして与えられた値kのlower bound とupper bound の組を求めてください。
僕が作成、提出したコードは、以下のとおりです。
Aizu Online Judge in C++ #ITP2_6_D : Equal Range
/* Aizu Online Judge in C++ #ITP2_6_D : Equal Range https://onlinejudge.u-aizu.ac.jp/problems/ITP2_6_D 提出コードの解答例 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]; } int q; cin>>q; vector<int> k(q); for(int i=0;i<q;i++){ cin>>k[i]; decltype(a)::iterator it1=lower_bound(a.begin(),a.end(),k[i]); decltype(a)::iterator it2=upper_bound(a.begin(),a.end(),k[i]); int ans1=distance(a.begin(),it1); int ans2=distance(a.begin(),it2); cout<<ans1<<" "; cout<<ans2<<endl; } return 0; }
設問の出典は、プログラミング問題のオンライン採点システム「Aizu Online Judge(AOJ)」です。
http://judge.u-aizu.ac.jp/onlinejudge/