Pagini recente » Cod sursa (job #296790) | Cod sursa (job #1609675) | Cod sursa (job #295129) | Cod sursa (job #443868) | Cod sursa (job #195751)
Cod sursa(job #195751)
# include <stdio.h>
# define FIN "cautbin.in"
# define FOUT "cautbin.out"
# define MAXN 100001
long nr[MAXN];
long N, M, i, ind, val;
void search1(long val)
{
long st=1, dr=N, mij, poz=-1;
while (st<=dr)
{
mij=(st+dr)/2;
if (nr[mij] == val)
{
poz=mij;
st=mij+1;
}
else
if (nr[mij]<val) st=mij+1;
else dr=mij-1;
}
printf("%ld\n",poz);
}
void search2(long val)
{
long st=1, dr=N, mij, poz;
while (st<=dr)
{
mij=(st+dr)/2;
if (nr[mij]<=val)
{
poz=mij;
st=mij+1;
}
else
dr=mij-1;
}
printf("%ld\n",poz);
}
void search3(long val)
{
long st=1, dr=N, mij, poz;
while (st<=dr)
{
mij=(st+dr)/2;
if (nr[mij]>=val)
{
poz=mij;
dr=mij-1;
}
else
st=mij+1;
}
printf("%ld\n",poz);
}
int main()
{
freopen(FIN,"r",stdin);
freopen(FOUT,"w",stdout);
scanf("%ld",&N);
for (i = 1; i <= N; ++i)
scanf("%ld",&nr[i]);
scanf("%ld",&M);
for (i = 1; i <= M; ++i)
{
scanf("%ld %ld",&ind,&val);
if (ind == 0) search1(val);
if (ind == 1) search2(val);
if (ind == 2) search3(val);
}
return 0;
}