Pagini recente » Cod sursa (job #141649) | Cod sursa (job #2739897) | Cod sursa (job #2029089) | Cod sursa (job #891892) | Cod sursa (job #1247121)
#include <stdio.h>
FILE *fin ,*fout;
long long v[200001] ,m ,n ,q ,x ,i ,j ,log ,pas;
int main()
{
fin = fopen("cautbin.in" ,"r");
fout = fopen ("cautbin.out" ,"w");
fscanf(fin ,"%d" ,&n);
for(i=1;i<=n;i++)
{
fscanf(fin ,"%d" ,&v[i]);
}
log=1;
while(2*log <= n)
{
log=log*2;
}
fscanf (fin , "%d" ,&m);
for(j=1;j<=m;j++)
{
fscanf (fin ,"%d" ,&q);
if(q==0)
{
fscanf (fin ,"%d" , &x);
if(x>v[n]) fprintf(fout ,"-1");
else
{
i=0;
pas=1;
pas=log;
while(pas!=0)
{
if(v[i+pas]<x)i+=pas;
pas/=2;
}
if(v[i+1]!=x)fprintf(fout ,"%d" ,(i+1));
else fprintf(fout ,"-1");
}
}
if(q==1)
{
fscanf(fin ,"%d" , &x);
i=0;
pas=1;
pas=log;
while(pas!=0)
{
if(v[i+pas]<=x)i+=pas;
pas/=2;
}
fprintf(fout ,"%d" ,i);
}
if(q==2)
{
i=0;
pas=1;
pas=log;
while(pas!=0)
{
if(v[i+pas]<x)i+=pas;
pas/=2;
}
fprintf(fout ,"%d" ,i+1);
}
}
return 0;
}