Pagini recente » Cod sursa (job #1892486) | Cod sursa (job #1661208) | Cod sursa (job #2868299) | Cod sursa (job #1305973) | Cod sursa (job #1795488)
#include<cstdio>
using namespace std;
FILE*in=fopen("cautbin.in","r");
FILE*out=fopen("cautbin.out","w");
int N,v[100002],i,t,a,k;
int cautbin(int x)
{
int step=1;
int start=0;
while(step<=N)
{
step=step*2;
}
while(step)
{
if(start+step>N)
{
step=step/2;
continue;
}
if(v[start + step]<=x)
{
start=start+step;
}
step=step/2;
}
return start;
}
int M;
int main()
{
fscanf(in,"%d",&N);
for(i=0;i<N;i++)
{
fscanf(in,"%d",&v[i]);
}
fscanf(in,"%d",&M);
for(i=0;i<M;i++)
{
fscanf(in,"%d%d",&t,&a);
if(t==0)
{
if(v[cautbin(a)]==a)
{
fprintf(out,"%d\n",cautbin(a)+1);
}
else
{
if(v[cautbin(a)]<a)
{
fprintf(out,"-1\n");
}
}
}
if(t==1)
{
fprintf(out,"%d\n",cautbin(a)+1);
}
if(t==2)
{
fprintf(out,"%d\n",cautbin(a-1)+2);
}
}
}