Pagini recente » Cod sursa (job #1626515) | Cod sursa (job #1305098) | Cod sursa (job #3219856) | Cod sursa (job #1639409) | Cod sursa (job #2068258)
#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);
fout = fopen("cautbin.out", "w");
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 (prop)
r += pas;
}
pas >>= 1;
}
if (p == 0 && v[r] != x)
r = -1;
if (p == 2)
r++;
fprintf(fout, "%d\n", r + 1);
}
fclose(fin);
fclose(fout);
return 0;
}