Pagini recente » Cod sursa (job #2276015) | Cod sursa (job #1050909) | Cod sursa (job #1873028) | Cod sursa (job #1093725) | Cod sursa (job #586851)
Cod sursa(job #586851)
#include <stdio.h>
FILE *f,*s;
int a,b;
int i,j,k,l,m,n;
int v[100005];
void Cauta1()
{
int st=1;
int dr=n;
int mj;
while(st<=dr)
{
mj=(st+dr)/2;
if(v[mj]==b && (v[mj+1]!=b || mj+1>n))
{
fprintf(s,"%d\n",mj);
break;
}
else if(v[mj]<=b)
st=mj+1;
else
dr=mj-1;
}
fprintf(s,"-1\n");
}
void Cauta2()
{
int st=1;
int dr=n;
int mj;
while(st<=dr)
{
mj=(st+dr)/2;
if(v[mj]<=b && (v[mj+1]>b || mj+1>n))
{
fprintf(s,"%d\n",mj);
break;
}
else if(v[mj]<=b)
st=mj+1;
else
dr=mj-1;
}
}
void Cauta3()
{
int st=1;
int dr=n;
int mj;
while(st<=dr)
{
mj=(st+dr)/2;
if(v[mj]>=b && (v[mj-1]<b || mj-1<1))
{
fprintf(s,"%d\n",mj);
break;
}
else if(v[mj]>=b)
dr=mj-1;
else
st=mj+1;
}
}
int main()
{
f=fopen("cautbin.in","r");
s=fopen("cautbin.out","w");
fscanf(f,"%d",&n);
for(i=1;i<=n;i++)
fscanf(f,"%d",&v[i]);
fscanf(f,"%d",&m);
for(i=1;i<=m;i++)
{
fscanf(f,"%d %d",&a,&b);
if(a==0) Cauta1();
if(a==1) Cauta2();
if(a==2) Cauta3();
}
fclose(s);
return 0;
}