Pagini recente » Cod sursa (job #2891572) | Cod sursa (job #1861225) | Cod sursa (job #1564727) | Cod sursa (job #1613637) | Cod sursa (job #1358624)
#include<stdio.h>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
freopen("cautbin.in", "r", stdin);
freopen("cautbin.out", "w", stdout);
int n; scanf("%d", &n);
vector<int> v;
int x;
for(int i = 0 ; i < n && scanf("%d", &x) ; ++i) v.push_back(x);
int m; scanf("%d", &m);
for(; m ; --m) {
int type, val;
scanf("%d%d", &type, &val);
if(type == 0) {
vector<int>::iterator it = lower_bound(v.begin(), v.end(), val);
if(it != v.end() && !(val < *it)) {
for(; val = *it ; ++it);
printf("%d\n", it - v.begin());
} else printf("-1\n");
} else if(type == 1) {
vector<int>::iterator it = lower_bound(v.begin(), v.end(), val);
if(it != v.end() && (val == *it)) printf("%d\n", it - v.begin());
else printf("%d\n", it - v.begin() - 1);
} else if(type == 2) {
vector<int>::iterator it = upper_bound(v.begin(), v.end(), val);
if(it != v.end() && (val == *it)) printf("%d\n", it - v.begin());
else printf("%d\n", it - v.begin() + 1);
}
}
return 0;
}