Pagini recente » Cod sursa (job #1619487) | Cod sursa (job #53543) | Cod sursa (job #2195067) | Cod sursa (job #2079216) | Cod sursa (job #1954925)
#include <iostream>
#include <fstream>
using namespace std;
int N,M,v[100000];
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int poz_max(int x)
{
int hi,lo;
int mid;
hi=N+1;
lo=0;
while(hi-lo>1)
{
mid=(lo+hi)/2;
if(v[mid]<=x)
lo=mid;
else hi=mid;
}
return lo;
}
int poz_min(int x)
{
int hi,lo;
int mid;
hi=N+1;
lo=0;
while(hi-lo>1)
{
mid=(lo+hi)/2;
if(v[mid]>=x)
hi=mid;
else lo=mid;
}
return hi;
}
int main()
{
int r,val;
f>>N;
for(int i=1;i<=N;i++){
f>>v[i];
}
f>>M;
for(int i=0;i<M;i++)
{
f>>r;
f>>val;
if(r==0){
int poz=poz_max(val);
if(val>v[poz])
poz=-1;
g<<poz<<'\n';
}
if(r==1){
int poz=poz_max(val);
g<<poz<<'\n';
}
if(r==2){
int poz=poz_min(val);
g<<poz<<'\n';
}
}
return 0;
}