Pagini recente » Istoria paginii runda/hard123 | Istoria paginii utilizator/periosoare | Istoria paginii runda/antr7 | Cod sursa (job #1282382) | Cod sursa (job #1953076)
#include <iostream>
#include <fstream>
using namespace std;
int a[100000],n;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
struct raspuns{
int val;
int x;
};
raspuns r[100000];
int valmax(int x){
int lo = -1, hi = n, mid;
while(hi-lo != 1){
mid = (hi+lo)/2;
if(a[mid] > x){
hi = mid;
}
else{
lo = mid;
}
}
return lo;
}
int valmin(int x){
int lo = -1, hi = n, mid;
while(hi-lo != 1){
mid = (hi+lo)/2;
if(a[mid] >= x){
hi = mid;
}
else{
lo = mid;
}
}
return hi;
}
int main()
{
int nrr;
f >> n;
for(int i = 0; i < n; i++){
f >> a[i];
}
f >> nrr;
for(int i = 0; i < nrr; i++){
f >> r[i].val >> r[i].x;
switch(r[i].val){
case 0: if(a[valmax(r[i].x)] != r[i].x){
g << -1 << endl;
}
else g << valmax(r[i].x)+1 << endl;
break;
case 1: g << valmax(r[i].x)+1 << endl; break;
case 2: g << valmin(r[i].x)+1 << endl; break;
}
}
return 0;
}