Pagini recente » Cod sursa (job #3232359) | Cod sursa (job #2613194) | Cod sursa (job #2118384) | Cod sursa (job #1400277) | Cod sursa (job #2285291)
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
void read(int &n, int &m, vector<int> &arr, vector<pair<int, int> > &queries) {
int arr_val;
int query_type, query_val;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d", &arr_val);
arr.push_back(arr_val);
}
scanf("%d", &m);
for (int i = 0; i < m; i++) {
scanf("%d %d", &query_type, &query_val);
queries.push_back(make_pair(query_type, query_val));
}
}
void solve(vector<int> arr, vector<pair<int, int> > queries) {
for (vector<pair<int, int> >:: iterator it = queries.begin(); it != queries.end(); it++) {
vector<int>::iterator index;
int output;
switch (it->first) {
case 0:
index = upper_bound(arr.begin(), arr.end(), it->second);
output = index - arr.begin();
if (output < 1 || output > arr.size() || arr[output - 1] != it->second) {
output = -1;
}
break;
case 1:
index = lower_bound(arr.begin(), arr.end(), it->second + 1);
output = index - arr.begin();
break;
default:
index = upper_bound(arr.begin(), arr.end(), it->second - 1);
output = index - arr.begin() + 1;
break;
}
printf("%d\n", output);
}
}
int main() {
freopen("cautbin.in", "r", stdin);
freopen("cautbin.out", "w", stdout);
int n, m;
vector<int> arr;
vector<pair<int, int> > queries;
read(n, m, arr, queries);
solve(arr, queries);
}