Pagini recente » Cod sursa (job #1600303) | Cod sursa (job #2760109) | Cod sursa (job #3185991) | Cod sursa (job #2070461) | Cod sursa (job #2919865)
#include <fstream>
#include <iostream>
using namespace std;
int v[100006];
int w[100006];
int binsearc(int l, int r, int arr[], int x){
if(arr[l] > x)
return -1;
if(l == r)
return l;
int mid = (l + r) / 2;
if(arr[mid + 1] <= x)
return binsearc(mid + 1, r, arr, x);
else
return binsearc(l, mid, arr, x);
}
int query(int q, int x, int n){
int idx;
switch(q){
case 0:
idx = binsearc(0, n - 1, v, x);
return x == v[idx] ? idx : -2;
case 1:
return binsearc(0, n - 1, v, x);
case 2:
return (n - 1) - binsearc(0, n - 1, w, -x);
}
return -1;
}
int main(){
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int n, m, q, x;
fin >> n;
for(int i = 0; i < n; ++i){
fin >> v[i];
w[n - 1 - i] = -v[i];
}
fin >> m;
for(int i = 0; i < m; ++i){
fin >> q >> x;
fout << query(q, x, n) + 1 << "\n";
}
}