Pagini recente » Cod sursa (job #2299049) | Cod sursa (job #173650) | Cod sursa (job #144792) | Monitorul de evaluare | Cod sursa (job #676556)
Cod sursa(job #676556)
#include <cstdio>
#define _MAX_N 100010
using namespace std;
int v[_MAX_N], n;
int binary_search(int x, int &p, int &u) {
int mj;
while(p <= u) {
mj = p + (u - p) / 2;
if(x < v[mj])
u = mj - 1;
else
p = mj + 1;
}
return 0;
}
int main() {
int p, u, op, m, x;
freopen("cautbin.in", "r", stdin);
freopen("cautbin.out", "w", stdout);
scanf("%d", &n);
for(int i = 1; i <= n; i ++)
scanf("%d", &v[i]);
scanf("%d", &m);
for(int i = 0; i < m; i ++) {
scanf("%d%d", &op, &x);
p = 1; u = n;
binary_search(x, p, u);
if(op == 0)
if(v[u] == x)
printf("%d\n", u);
else
printf("-1\n");
if(op == 1)
printf("%d\n", u);
if(op == 2) {
while(v[p - 1] == x)
p --;
printf("%d\n", p);
}
}
return 0;
}