Pagini recente » Cod sursa (job #1848246) | Cod sursa (job #65854) | Cod sursa (job #232839) | Cod sursa (job #1175486) | Cod sursa (job #268972)
Cod sursa(job #268972)
#include <cstdio>
#define MAXN 100
int n, v[MAXN];
void citeste_vector()
{
scanf("%d", &n);
for(int i=1; i<=n; ++i) scanf("%d", v+i);
}
int cb(int x)
{
int li = 1, ls = n, mij;
while(ls > li)
{
mij = li + (ls - li) / 2;
if(v[mij] == x) break;
if(v[mij] > x) ls = mij - 1;
else li = mij + 1;
}
return li;
}
void r0(int x)
{
int li = cb(x);
while(v[li] == x) ++li;
if(v[li-1] == x) printf("%d\n", li-1);
else printf("-1\n");
}
void r1(int x)
{
int ind = cb(x);
while(v[ind] > x) ind--;
printf("%d\n", ind);
}
void r2(int x)
{
int ind = cb(x);
while(v[ind] < x) ind++;
printf("%d\n", ind);
}
int main()
{
freopen("cautbin.in", "r", stdin);
freopen("cautbin.out", "w", stdout);
citeste_vector();
int teste, operatie, x;
scanf("%d", &teste);
for(;teste;--teste)
{
scanf("%d%d", &operatie, &x);
switch(operatie)
{
case 0:
r0(x);
break;
case 1:
r1(x);
break;
case 2:
r2(x);
break;
}
}
fclose(stdin);
return 0;
}