Pagini recente » Cod sursa (job #2624551) | Cod sursa (job #747611) | Cod sursa (job #576060) | Cod sursa (job #1850882) | Cod sursa (job #2262119)
#include <stdio.h>
#include <stdlib.h>
int v[100000];
int main()
{
FILE*fin,*fout;
fin=fopen("cautbin.in","r");
fout=fopen("cautbin.out","w");
int n,m,dreapta,stinga,e,x,mijloc,i;
fscanf(fin,"%d",&n);
for(i=0; i<n; i++)
{
fscanf(fin,"%d",&v[i]);
}
fscanf(fin,"%d",&m);
for(i=0; i<m; i++)
{
stinga = 0;
dreapta = n-1;
fscanf(fin,"%d%d",&x,&e);
if(x==0)
{
while ( dreapta - stinga > 1 )
{
mijloc = (stinga + dreapta) / 2;
if ( v[mijloc] > e )
dreapta = mijloc;
else
stinga = mijloc;
}
if ( e == v[stinga] )
fprintf(fout,"%d\n",stinga+1);
else
fprintf(fout,"-1\n");
}
if(x==1)
{
while ( dreapta - stinga > 1 )
{
mijloc = (stinga + dreapta) / 2;
if ( v[mijloc] > e )
dreapta = mijloc;
else
stinga = mijloc;
}
fprintf(fout,"%d\n",stinga+1);
}
if(x==2)
{
while ( dreapta - stinga > 1 )
{
mijloc = (stinga + dreapta) / 2;
if ( v[mijloc] > e )
dreapta = mijloc;
else
stinga = mijloc;
}
fprintf(fout,"%d",dreapta+1);
}
}
fclose(fin);
fclose(fout);
return 0;
}