Pagini recente » Cod sursa (job #295230) | Cod sursa (job #2801084) | Cod sursa (job #2277808) | Cod sursa (job #611269) | Cod sursa (job #420133)
Cod sursa(job #420133)
#include<stdio.h>
int n,v[100001],m,x;
FILE *f,*g;
int bsearch0 (int s, int d)
{
int mij;
while (s<=d)
{
mij=(s+d)/2;
if (v[mij]<=x)
s=mij+1;
else
d=mij-1;
}
mij=(s+d)/2;
while (v[mij]>x)
mij--;
if (v[mij]==x)
return mij;
return -1;
}
int bsearch1(int s, int d)
{
int mij;
while (s<d)
{
mij=(s+d)/2;
if (v[mij]<=x)
s=mij+1;
else
d=mij;
}
mij=(s+d)/2;
while (v[mij]>x)
mij--;
return mij;
}
int bsearch2 (int s, int d)
{
int mij;
while (s<d)
{
mij=(s+d)/2;
if (v[mij]<x)
s=mij+1;
else
d=mij;
}
mij=(s+d)/2;
while (v[mij]<x)
mij++;
return mij;
}
void read ()
{
f=fopen("cautbin.in","r");
g=fopen("cautbin.out","w");
fscanf(f,"%d",&n);
int i,tip;
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",&tip,&x);
if (tip==0)
fprintf(g,"%d\n",bsearch0(1,n));
if (tip==1)
fprintf(g,"%d\n",bsearch1(1,n));
if (tip==2)
fprintf(g,"%d\n",bsearch2(1,n));
}
fclose(f);
fclose(g);
}
int main ()
{
read ();
return 0;
}