Pagini recente » Cod sursa (job #846084) | Istoria paginii runda/prep | Cod sursa (job #2449431) | Cod sursa (job #1175669) | Cod sursa (job #1953092)
#include <iostream>
#include <fstream>
using namespace std;
int a[100000],n;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
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;
int val,x,poz;
for(int i = 0; i < nrr; i++){
f >> val >> x;
switch(val){
case 0: poz = valmax(x);
if(a[poz] != x){
g << -1 << "\n";
}
else g << poz+1 << "\n";
break;
case 1: g << valmax(x)+1 << "\n"; break;
case 2: g << valmin(x)+1 << "\n"; break;
}
}
return 0;
}