Pagini recente » Cod sursa (job #1502947) | Cod sursa (job #1315936) | Cod sursa (job #392080) | Cod sursa (job #2011561) | Cod sursa (job #1567533)
#include <cstdio>
#include <algorithm>
#define MaxN 100000
#define BUCKET 320
using namespace std;
int v[MaxN];
int s[BUCKET];
int main() {
freopen("cautbin.in", "r", stdin);
freopen("cautbin.out", "w", stdout);
int N, Q, queryType, key;
int numBuckets;
int poz;
scanf("%d", &N);
for (int i = 0; i < N; i++) {
scanf("%d", &v[i]);
}
s[0] = -1;
numBuckets = 1;
for (int i = BUCKET - 1; i < N; i += BUCKET) {
s[numBuckets++] = v[i];
}
scanf("%d", &Q);
for (int iter = 0; iter < Q; iter++) {
scanf("%d%d", &queryType, &key);
key -= (queryType == 2);
poz = upper_bound(s, s + numBuckets, key) - s - 1;
poz *= BUCKET;
poz = upper_bound(v + poz, v + min(poz + BUCKET, N), key) - v - 1;
if (!queryType) {
if (v[poz] == key) {
printf("%d\n", poz + 1);
} else {
puts("-1");
}
} else {
poz += (queryType == 2);
printf("%d\n", poz + 1);
}
}
fclose(stdin);
fclose(stdout);
return 0;
}