Pagini recente » Cod sursa (job #98320) | Cod sursa (job #1912550) | Cod sursa (job #861860) | Cod sursa (job #1565228) | Cod sursa (job #1816296)
#include <cstdio>
using namespace std;
FILE *f=fopen("cautbin.in","r");
FILE *g=fopen("cautbin.out","w");
int v[100000],n;
int rez1(int x)
{
int pas=1<<x,r=0;
while(pas!=0)
{
if(v[r+pas]<=x&&r+pas<=n)
r+=pas;
pas/=2;
}
if(v[r]==x)
return r;
else return -1;
}
int rez2(int x)
{
int pas=1<<x,r=0;
while(pas!=0)
{
if(v[r+pas]<=x&&r+pas<=n)
r+=pas;
pas/=2;
}
return r;
}
int rez3(int x)
{
int pas=1<<x,r=0;
while(pas!=0)
{
if(v[r+pas]<x&&r+pas<=n)
r+=pas;
pas/=2;
}
return r+1;
}
int main()
{
int p,x,m,i;
fscanf(f,"%d",&n);
for(i=1; i<=n; i++)
fscanf(f,"%d",&v[i]);
fscanf(f,"%d",&m);
for(i=1; i<=m; i++)
{
fscanf(f,"%d%d",&p,&x);
if(p==0)
fprintf(g,"%d\n",rez1(x));
else if(p==1)
fprintf(g,"%d\n",rez2(x));
else fprintf(g,"%d\n",rez3(x));
}
return 0;
}