Pagini recente » Cod sursa (job #2221314) | Cod sursa (job #3289938) | Cod sursa (job #1609632) | Cod sursa (job #2902214) | Cod sursa (job #2068252)
#include <stdio.h>
#include <stdbool.h>
int v[100000];
#define L 16
int main()
{
FILE *fin, *fout;
int n, m;
int i, p, x;
int pas, r;
bool prop;
fin = fopen("cautbin.in", "r");
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", &p, &x);
pas = 1 << L;
r = 0;
while (pas != 0) {
if (r + pas <= n) {
switch (p) {
case 0: case 1: prop = v[r + pas] <= x; break;
case 2: prop = !(v[r + pas] >= x); break;
}
}
if (r + pas <= n && prop)
r += pas;
pas >>= 1;
}
if (p == 0 && v[r] != x)
r = -1;
if (p == 2)
r++;
printf("%d\n", r + 1);
}
fclose(fin);
return 0;
}