Pagini recente » Cod sursa (job #804469) | Cod sursa (job #2144570) | Cod sursa (job #479837) | Cod sursa (job #2372805) | Cod sursa (job #1029164)
#include <cstdio>
#include <algorithm>
#define MAX 100000
using namespace std;
int n, m, v[MAX];
inline void read(){
freopen("cautbin.in", "r", stdin);
freopen("cautbin.out", "w", stdout);
}
inline void read_data(){
scanf("%d", &n);
for (int i = 0; i < n; i++)
scanf("%d",&v[i]);
scanf("%d", &m);
}
void solve(int type, int x){
int lower = lower_bound(v, v + n - 1, x) - v, upper = upper_bound(v, v + n - 1, x) - v;
switch(type){
case(0):if (v[upper] == x)
printf("%d\n", upper + 1);
else if (v[upper - 1] == x)
printf("%d\n", upper);
else
printf("-1\n");
break;
case(1):if (v[upper] <= x)
printf("%d\n", upper + 1);
else
printf("%d\n", upper);
break;
case(2): upper = upper_bound(v, v + n - 1, x - 1) - v;
printf("%d\n", upper + 1); break;
}
}
int main() {
read();
read_data();
int type, x;
while (m > 0){
m--;
scanf("%d %d", &type, &x);
solve(type, x);
}
return 0;
}