Pagini recente » Cod sursa (job #694415) | Cod sursa (job #2826605) | Cod sursa (job #1993275) | Cod sursa (job #359211) | Cod sursa (job #2526096)
#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, left, right, mid;
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) {
left = 0, right = n;
while (right - left > 1) {
mid = (left + right) / 2;
if (v[mid] > x)
right = mid;
else
left = mid;
}
if (v[left] == x)
fprintf(fout, "%d\n", left + 1);
else
fprintf(fout, "-1\n");
} else if (task == 1) {
left = 0, right = n;
while (right - left > 1) {
mid = (left + right) / 2;
if (v[mid] > x)
right = mid;
else
left = mid;
}
fprintf(fout, "%d\n", left + 1);
} else if (task == 2) {
left = 0, right = n;
while (right - left > 1) {
mid = (left + right) / 2;
if (v[mid] > x - 1)
right = mid;
else
left = mid;
}
fprintf(fout, "%d\n", left + 2);
}
}
fclose(fin);
fclose(fout);
return 0;
}