Pagini recente » Cod sursa (job #3262821) | Cod sursa (job #2520424) | Cod sursa (job #1410443) | Cod sursa (job #3268779) | Cod sursa (job #2929697)
#include <stdio.h>
#define MAXN 100000
int v[MAXN];
int main() {
FILE *fin, *fout;
int n, m, i, tip_intrebare, x, stanga, dreapta, mijloc;
fin = fopen("cautbin.in", "r");
fscanf(fin, "%d", &n);
for(i = 0; i < n; i++)
fscanf(fin, "%d", &v[i]);
fscanf(fin, "%d", &m);
fout = fopen("cautbin.out", "w");
for(i = 0; i < m; i++) {
fscanf(fin, "%d%d", &tip_intrebare, &x);
if(tip_intrebare == 0 || tip_intrebare == 1) {
stanga = 0;
dreapta = n;
while(dreapta - stanga > 1) {
mijloc = (dreapta + stanga) / 2;
if(v[mijloc] > x)
dreapta = mijloc;
else
stanga = mijloc;
}
if(tip_intrebare == 0)
fprintf(fout, "%d\n", x == v[stanga] ? stanga + 1 : -1);
else
fprintf(fout, "%d\n", stanga + 1);
} else {
stanga = -1;
dreapta = n - 1;
while(dreapta - stanga > 1) {
mijloc = (dreapta + stanga) / 2;
if(v[mijloc] < x) {
stanga = mijloc;
} else {
dreapta = mijloc;
}
}
fprintf(fout, "%d\n", dreapta + 1);
}
}
fclose(fin);
fclose(fout);
return 0;
}