Pagini recente » Cod sursa (job #307513) | Cod sursa (job #876175) | Cod sursa (job #1256228) | Cod sursa (job #6266) | Cod sursa (job #781324)
Cod sursa(job #781324)
#include <cstdio>
#define Max 100001
int n,v[Max];
int cb0(int x){
int l = 1,r = n,m;
while(l < r)
{
m = (l+r)/2;
if(v[m] > x)r = m; else l = m+1;
}
return v[r-1] == x ? r-1 : -1;
}
int cb1(int x){
int l = 1,r = n,m;
while(r - l > 1)
{
m = (l+r)/2;
if(v[m] <= x)l = m; else r = m-1;
}
return v[r] <= x ? r : l;
}
int cb2(int x){
int l = 1,r = n,m;
while(r - l > 1)
{
m = (l+r)/2;
if(v[m] >= x)r = m; else l = m+1;
}
return v[l] >= x ? l : r;
}
int main(){
int m,c,x;
freopen("cautbin.in","r",stdin);
freopen("cautbin.out","w",stdout);
scanf("%d",&n);
for(int i=1;i<=n;i++)scanf("%d",&v[i]);
scanf("%d",&m);
while(m--)
{
scanf("%d %d",&c,&x);
switch(c){
case 0 : printf("%d\n",cb0(x)); break;
case 1 : printf("%d\n",cb1(x)); break;
case 2 : printf("%d\n",cb2(x)); break;
}
}
return 0;
}