Pagini recente » Rotatie lexicografic minima | Cod sursa (job #1752549) | Cod sursa (job #868092) | Cod sursa (job #2300732) | Cod sursa (job #1166904)
/*
ID: adinama1
PROG: test
LANG: C++
*/
#include <cstdio>
#include <iostream>
#include <fstream>
#include <vector>
#include <list>
#include <map>
#include <set>
#include <queue>
#include <stack>
#include <bitset>
#include <algorithm>
#include <sstream>
#include <iomanip>
#include <cmath>
#include <cstdlib>
#include <ctype.h>
#include <cstring>
#include <string>
#include <ctime>
#include <cassert>
#include <utility>
using namespace std;
#define LIM 100005
int v[LIM];
int main() {
freopen("cautbin.in", "r", stdin);
freopen("cautbin.out","w", stdout);
int n, m, op, num;
cin >> n;
for(int i = 0; i < n; ++i) {
cin >> v[i];
}
cin >> m;
for(int i = 0; i < m; ++i) {
cin >> op >> num;
switch(op) {
case 0: if(binary_search(v, v + n, num)) {
cout << upper_bound(v, v + n, num) - v << endl; // cea mai mare poz pe care se afla un element = num
} else
cout << -1 << endl;
break;
case 1: cout << lower_bound(v, v + n, num + 1) - v << endl; // cea mai mare poz pe care se afla un element <= num
break;
default: cout << upper_bound(v, v + n, num - 1) - v + 1 << endl; // cea mai mica poz pe care se afla un element >= num
}
}
return 0;
}