Pagini recente » Cod sursa (job #1391202) | Cod sursa (job #3207477) | Cod sursa (job #3149130) | Cod sursa (job #15401) | Cod sursa (job #1967239)
#include<fstream>
using namespace std;
int n,x,y,z,m,a[100100];
ifstream cin("cautbin.in");
ofstream cout("cautbin.out");
int binarSearch(int a[], int n, int v) {
int low=0;
int high=n-1;
int mid;
while (low<=high) {
mid=(low+high)/2;
if (a[mid]==v) return mid;
else if (a[mid]>v) high=mid-1;
else if (a[mid]<v) low=mid+1;
}
return mid;
}
int main(){
cin>>n;
for (int i=0; i<n; i++)
cin>>a[i];
cin>>m;
for (int i=0; i<m; i++) {
cin>>x>>y;
if (x==0) {
z=binarSearch(a,n,y);
if (a[z]==y) {
if (z>=0) {
while (z<n-1 && a[z]==a[z+1]) z++;
}
cout<<z+1<<endl;}
else cout<<"-1"<<endl;
}
else if (x==1) {
z=binarSearch(a,n,y);
if (a[z]==y) {
while (z<n-1 && a[z]==a[z+1]) z++;
}
else if (a[z]>y) {
while (z>0 && a[z]>y) z--;
}
cout<<z+1<<endl;
}
else if (x==2) {
z=binarSearch(a,n,y);
if (a[z]==y) {
while (z>1 && a[z]==a[z-1]) z--;
}
else if (a[z]<y) {
while (z<n-1 && a[z]<y) z++;
}
cout<<z+1<<endl;
}
}
return 0;
}