Pagini recente » Cod sursa (job #2129311) | Cod sursa (job #1351367) | Cod sursa (job #2477734) | Cod sursa (job #2978594) | Cod sursa (job #2071992)
#include <stdio.h>
#include <stdlib.h>
int v[100001];
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=1;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));
}
fclose(fi);
fclose(fo);
return 0;
}