Pagini recente » Cod sursa (job #2370269) | Cod sursa (job #1600306) | Cod sursa (job #1928234) | Cod sursa (job #2984923) | Cod sursa (job #1882734)
#include <bits/stdc++.h>
#define ll long long
using namespace std;
int n,m,i,j;
long long st,dr,mid,fin,a[100010],x,y;
ll cb1(ll st, ll dr){
mid=(st+dr)/2;
if(st==mid) return fin;
if(a[mid]>y) {
fin=st;
cb1(st,mid);}
else{
if(a[mid]==y)fin=mid; else fin=dr;
cb1(mid,dr);}
}
ll cb2(ll st, ll dr)
{
mid=(st+dr)/2;
if(st==mid) return fin;
if(a[mid]>=y) {fin=mid;
cb2(st,mid);}
else {fin=dr; cb2(mid,dr);}
}
int main()
{
ifstream cin("cautbin.in");
ofstream cout("cautbin.out");
cin>>n;
for(i=1;i<=n;i++) cin>>a[i];
cin>>m;
for(j=1;j<=m;j++)
{
cin>>x>>y;
if(x==0){
cb1(1,n);
if(a[fin]==y) cout<<fin<<"\n";
else cout<<-1<<"\n";
}
if(x==1)
{
cb1(1,n);
if(a[fin]==y)cout<<fin<<"\n";
else cout<<fin-1<<"\n";
}
if(x==2)
{
cb1(1,n);
if(a[fin]!=y)cout<<fin<<"\n";
else{
cb2(1,n);
cout<<fin<<"\n";
}
}
}
return 0;
}