Pagini recente » Cod sursa (job #3155297) | Cod sursa (job #3169236) | Cod sursa (job #2524241) | Cod sursa (job #369016) | Cod sursa (job #2071988)
#include <stdio.h>
#include <stdlib.h>
int v[100000];
int n;
int cer1(int x){
int r,p;
p=1<<17;
r=0;
while(p>0)
{
if(r+p<n && v[r+p]<=x)
r+=p;
p/=2;
}
if(v[r]==x)
return r;
return -1;
}
int cer2(int x){
int r,p;
p=1<<17;
r=0;
while(p>0)
{
if(r+p<n && v[r+p]<=x)
r+=p;
p/=2;
}
return r;
}
int cer3(int x){
int r,p;
p=1<<17;
r=0;
while(p>0)
{
if(r+p<n && v[r+p]<x)
r+=p;
p/=2;
}
return r+1;
}
int rez(int cer,int x){
if(cer==0)
return cer1(x);
else if(cer==1)
return cer2(x);
return cer3(x);
}
int main()
{
int m,i,a,b;
FILE*fi,*fo;
fi=fopen("cautbin.in","r");
fo=fopen("cautbin.out","w");
fscanf(fi,"%d",&n);
for(i=0;i<n;i++)
fscanf(fi,"%d",&v[i]);
fscanf(fi,"%d",&m);
for(i=0;i<m;i++)
{
fscanf(fi,"%d%d",&a,&b);
fprintf(fo,"%d\n",rez(a,b)+1);
}
fclose(fi);
fclose(fo);
return 0;
}