Pagini recente » Cod sursa (job #126548) | Cod sursa (job #2175564)
#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)
{
int poz=-1;
stanga=0;
dreapta=n;
while(dreapta-stanga>1)
{
mijloc=(stanga+dreapta)/2;
if(v[mijloc]>x) dreapta=mijloc;
else stanga=mijloc;
if(v[mijloc]==x) poz=mijloc;
}
fprintf(so,"%d\n",poz+1);
}
if(t==1)
{
int poz=-1;
stanga=0;
dreapta=n;
while(dreapta-stanga>1)
{
mijloc=(stanga+dreapta)/2;
if(v[mijloc]>x) dreapta=mijloc;
else stanga=mijloc;
if(v[mijloc]<=x) poz=mijloc;
}
fprintf(so,"%d\n",poz+1);
}
if(t==2)
{
int poz=-1;
stanga=0;
dreapta=n;
while(dreapta-stanga>1)
{
mijloc=(stanga+dreapta)/2;
if(v[mijloc]>=x) dreapta=mijloc;
else stanga=mijloc;
if(v[mijloc]>=x) poz=mijloc;
}
fprintf(so,"%d\n",poz+1);
}
}
fclose(si);
fclose(so);
return 0;
}