Pagini recente » Rating adrian (diesel40) | Cod sursa (job #1229210) | Istoria paginii utilizator/lavismile | Cod sursa (job #1786474) | Cod sursa (job #1953074)
#include <iostream>
#include <fstream>
using namespace std;
int a[100],n;
ifstream f("cautbin.in");
struct raspuns{
int val;
int x;
};
raspuns r[10];
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){
cout << -1 << endl;
}
else cout << valmax(r[i].x)+1 << endl;
break;
case 1: cout << valmax(r[i].x)+1 << endl; break;
case 2: cout << valmin(r[i].x)+1 << endl; break;
}
}
return 0;
}