Pagini recente » Cod sursa (job #670324) | Cod sursa (job #2647573) | Cod sursa (job #923834) | Cod sursa (job #2942581) | Cod sursa (job #2526101)
#include <cstdio>
#define MAX_N 100000
int v[MAX_N];
int main() {
FILE *fin, *fout;
fin = fopen("cautbin.in", "r");
fout = fopen("cautbin.out", "w");
int n, m, task, x, i, step;
fscanf(fin, "%d", &n);
for (int i = 0; i < n; ++i)
fscanf(fin, "%d", &v[i]);
fscanf(fin, "%d", &m);
while (m--) {
fscanf(fin, "%d%d", &task, &x);
if (task == 0) {
for (i = -1, step = 1 << 20; step; step >>= 1)
if (i + step < n && v[i + step] <= x)
i += step;
if (v[i] == x)
fprintf(fout, "%d\n", i + 1);
else
fprintf(fout, "-1\n");
} else if (task == 1) {
for (i = -1, step = 1 << 20; step; step >>= 1)
if (i + step < n && v[i + step] <= x)
i += step;
fprintf(fout, "%d\n", i + 1);
} else if (task == 2) {
for (i = -1, step = 1 << 20; step; step >>= 1)
if (i + step < n && v[i + step] <= x - 1)
i += step;
fprintf(fout, "%d\n", i + 2);
}
}
fclose(fin);
fclose(fout);
return 0;
}