Pagini recente » Cod sursa (job #588869) | Cod sursa (job #593463) | Cod sursa (job #3201437) | Cod sursa (job #1055846) | Cod sursa (job #2706843)
#include <bits/stdc++.h>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int a[100001];
int N, Q, q, x;
int LowerBound1(int x){
int l = 1, r = N;
while(l <= r){
int m = (l + r) >> 1;
if(a[m] > x) r = m - 1;
else l = m + 1;
}
return (a[r] == x)? r : -1;
}
int LowerBound2(int x){
int l = 1, r = N;
while(l <= r){
int m = (l + r) >> 1;
if(a[m] > x) r = m - 1;
else l = m + 1;
}
return r;
}
int LowerBound3(int x){
int l = 1, r = N;
while(l <= r){
int m = (l + r) >> 1;
if(a[m] < x) l = m + 1;
else r = m - 1;
}
return l;
}
int main(){
f >> N;
for(int i = 1;i <= N;i++)
f >> a[i];
a[0] = -1;
f >> Q;
while(Q--){
f >> q >> x;
if(q == 0) g << LowerBound1(x) << "\n";
if(q == 1) g << LowerBound2(x) << "\n";
if(q == 2) g << LowerBound3(x) << "\n";
}
}