Pagini recente » Cod sursa (job #188022) | Cod sursa (job #1953067) | Cod sursa (job #449742) | Cod sursa (job #1886840) | Cod sursa (job #2082353)
#include<bits/stdc++.h>
#define IOS ios_base::sync_with_stdio(0); cin.tie(0);
using namespace std;
int n,m,x;
int A[100100],y;
int bs0(int low, int high, int val) {
int mid;
while (low<=high) {
mid = (low+high)/2;
if (A[mid]<=val) low = mid+1;
else high = mid -1;
}
low--;
if (A[low] == val) return low;
else return -1;
}
int bs1(int low, int high, int val) {
int mid;
while (low<=high) {
mid = (low+high)/2;
if (A[mid]<=val) low = mid+1;
else high = mid -1;
}
low--;
if (A[low] <=val) return low;
else return -1;
}
int bs2(int low, int high, int val) {
int mid;
while (low<=high) {
mid = (low+high)/2;
if (A[mid]<val) low = mid+1;
else high = mid -1;
}
high++;
if (A[high] >=val) return high;
else return -1;
}
int main() {
IOS;
ifstream cin("cautbin.in");
ofstream cout("cautbin.out");
cin>>n;
for (int i=0; i<n; i++) cin>>A[i];
cin>>m;
while (m--) {
cin>>y>>x;
switch (y) {
case 0: {
int rs = bs0(0,n-1, x);
if (rs==-1) cout<<"-1"<<'\n';
else cout<<rs+1<<'\n';
break;
}
case 1:
cout<<bs1(0,n-1,x)+1<<'\n';
break;
case 2:
cout<<bs2(0,n-1,x)+1<<'\n';
break;
}
}
return 0;
}