Pagini recente » Monitorul de evaluare | Cod sursa (job #877557) | Cod sursa (job #750869) | Cod sursa (job #208090) | Cod sursa (job #663043)
Cod sursa(job #663043)
#include <cstdio>
#include <vector>
using namespace std;
#define file_in "cautbin.in"
#define file_out "cautbin.out"
int n,m;
int v[101000];
int cautare(int x){
int i,step;
for (step=1;step<n;step<<=1);
for (i=0;step;step>>=1)
if (i+step<=n && v[i+step]<=x)
i+=step;
return i;
}
int main(){
int i,tip,x;
freopen(file_in,"r",stdin);
freopen(file_out,"w",stdout);
scanf("%d", &n);
for (i=1;i<=n;++i)
scanf("%d", &v[i]);
scanf("%d", &m);
while(m--)
{
scanf("%d %d", &tip,&x);
if (tip==0){
int p=cautare(x);
if (v[p]==x)
printf("%d\n", p);
else
printf("-1\n");
}
if (tip==1){
int p=cautare(x);
printf("%d\n", p);
}
if (tip==2){
int p=cautare(x-1);
printf("%d\n", p+1);
}
}
return 0;
}