Pagini recente » Cod sursa (job #771058) | Cod sursa (job #1087355) | Cod sursa (job #2135175) | Borderou de evaluare (job #1567384) | Cod sursa (job #2209184)
#include <stdio.h>
#include <stdlib.h>
#define L 16
#define N 100001
int v[N], n, m;
int main() {
int r, pas, i, a, x;
FILE *fin, *fout;
fin = fopen("cautbin.in", "r");
fout = fopen("cautbin.out", "w");
fscanf(fin, "%d", &n);
for (i = 0; i < n; i++) {
fscanf(fin, "%d", &v[i]);
}
fscanf(fin, "%d", &m);
for (i = 0; i < m; i++) {
fscanf(fin, "%d%d", &a, &x);
if (a == 0) {
r = 0;
pas = 1 << L;
while (pas != 0) {
if (r + pas <= n && v[r + pas] <= x) {
r += pas;
}
pas /= 2;
}
if (r == 0 || v[r] < x) {
r = -1;
}
}
if (a == 1) {
r = 0;
pas = 1 << L;
while (pas != 0) {
if (r + pas <= n && v[r + pas] <= x) {
r += pas;
}
pas /= 2;
}
}
if (a == 2) {
r = 0;
pas = 1 << L;
while (pas != 0) {
if (r + pas <= n && v[r + pas] < x) {
r += pas;
}
pas /= 2;
}
r++;
}
r++;
fprintf(fout, "%d\n", r);
}
fclose(fin);
fclose(fout);
return 0;
}