Pagini recente » Cod sursa (job #137950) | Cod sursa (job #1795069) | Cod sursa (job #1045800) | Cod sursa (job #2015577) | Cod sursa (job #1883538)
#include <bits/stdc++.h>
#define ll long long
#define ui unsigned int
using namespace std;
int n,m,i,j;
unsigned int st,dr,mid,fin=1,a[100010],x,y;
ll cb1(ui st, ui dr){
if(st==dr-1) return fin;
mid=(st+dr)/2;
if(a[mid]>y) {
fin=st;
cb1(st,mid);}
else{
if(a[mid]==y)fin=mid; else fin=dr;
cb1(mid,dr);}
}
ll cb2(ui st, ui dr)
{
if(st==dr-1) return fin;
mid=(st+dr)/2;
if(a[mid]>=y) {if(a[mid]==y)fin=mid; else fin=st;
cb2(st,mid);}
else {fin=dr; cb2(mid,dr);}
}
// 1 2 3 4 4 4 5 6 7 8 8 12
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);
cout<<fin<<"\n";
}
if(x==2)
{
cb2(1,n);
cout<<fin<<"\n";
}
}
return 0;
}