Pagini recente » Cod sursa (job #35847) | Cod sursa (job #1683842) | Cod sursa (job #1682007) | Cod sursa (job #1868917) | Cod sursa (job #2175730)
#include <stdio.h>
#include <math.h>
int n,t,x,m;
int stanga,dreapta,mijloc;
int v[100001];
int main()
{
FILE* si=fopen("cautbin.in","r");
FILE* so=fopen("cautbin.out","w");
fscanf(si,"%d",&n);
for(int i=0; i<n; i++) fscanf(si,"%d",&v[i]);
fscanf(si,"%d",&m);
for(int i=0; i<m; i++)
{
fscanf(si,"%d%d",&t,&x);
if(t==0)
{
stanga=0;
dreapta=n;
bool gasit=false;
while(dreapta-stanga>1)
{
mijloc=(stanga+dreapta)/2;
if(v[mijloc]==x) gasit=true;
if(v[mijloc]>x) dreapta=mijloc;
else stanga=mijloc;
}
if(gasit) fprintf(so,"%d\n",stanga+1);
else fprintf(so,"%d\n",-1);
}
if(t==1)
{
stanga=0;
dreapta=n;
while(dreapta-stanga>1)
{
mijloc=(stanga+dreapta)/2;
if(v[mijloc]==x)
{
stanga=mijloc;
}
if(v[mijloc]>x) dreapta=mijloc;
else stanga=mijloc;
}
fprintf(so,"%d\n",stanga+1);
}
if(t==2)
{
stanga=0;
dreapta=n;
while(dreapta-stanga>1)
{
mijloc=(stanga+dreapta)/2;
if(v[mijloc]==x)
{
dreapta=mijloc;
}
else if(v[mijloc]>x) dreapta=mijloc;
else stanga=mijloc;
}
if(v[stanga]>=x) fprintf(so,"%d\n",stanga+1);
else fprintf(so,"%d\n",dreapta+1);
}
}
fclose(si);
fclose(so);
return 0;
}