Pagini recente » Cod sursa (job #1811929) | Cod sursa (job #1063492) | Cod sursa (job #694658) | Profil florin987 | Cod sursa (job #2047089)
#include <stdio.h>
#include <stdlib.h>
int v[100001];
int functie(int valoare, int n)
{
int inceput,sfarsit,mijloc, ans;
inceput=1;
sfarsit=n;
while(inceput<=sfarsit)
{
mijloc=(sfarsit+inceput)/2;
if(v[mijloc]<=valoare)
{
inceput=mijloc+1;
ans = mijloc;
}
else
sfarsit=mijloc-1;
}
return ans;
}
int main()
{
FILE *fin,*fout;
fin=fopen("cautbin.in","r");
fout=fopen("cautbin.out","w");
int n,j,i,x,m,poz,c;
fscanf(fin,"%d",&n);
for(j=1;j<=n;j++)
fscanf(fin,"%d",&v[j]);
fscanf(fin,"%d",&m);
for(j=1;j<=m;j++)
{
fscanf(fin,"%d%d",&c,&x);
if(c==0)
{
poz=functie(x,n);
if(v[poz]==x)
fprintf(fout,"%d\n",poz);
else
fprintf(fout,"-1\n");
}
else
{
if(c==2)
{
poz=functie(x-1,n);
fprintf(fout,"%d\n",poz+1);
}
else
{
poz=functie(x,n);
fprintf(fout,"%d\n",poz);
}
}
}
fclose(fin);
fclose(fout);
return 0;
}