Pagini recente » Cod sursa (job #3292142) | Cod sursa (job #2845983) | Cod sursa (job #2942537) | Cod sursa (job #2930939) | Cod sursa (job #1266938)
#include <stdio.h>
#include <stdlib.h>
int v[100001];
int main()
{
FILE *fin, *fout;
int n, i, t, tip, x, p2, put, rasp;
fin=fopen("cautbin.in", "r");
fscanf(fin, "%d", &n);
p2=1<<17;
while(p2>n)
p2>>=1;
p2<<=1;
for(i=1; i<=n; i++)
fscanf(fin, "%d", v+i);
fscanf(fin, "%d", &t);
fout=fopen("cautbin.out", "w");
for(i=0; i<t; i++){
fscanf(fin, "%d%d", &tip, &x);
put=p2;
if(tip<2){
rasp=0;
while(put){
if(rasp+put<=n && v[rasp+put]<=x)
rasp+=put;
put>>=1;
}
if(v[rasp]!=x && !tip)
fprintf(fout, "-1\n");
else
fprintf(fout, "%d\n", rasp);
} else{
rasp=n;
while(put){
if(rasp-put>0 && v[rasp-put]>=x)
rasp-=put;
put>>=1;
}
fprintf(fout, "%d\n", rasp);
}
}
fclose(fin);
fclose(fout);
return 0;
}