Pagini recente » Cod sursa (job #2275672) | Cod sursa (job #2904289) | Cod sursa (job #2696052) | Cod sursa (job #889548) | Cod sursa (job #3292876)
#include <iostream>
#include <bits/stdc++.h>
#define VMAX 100005
#define INF 2147000000
using namespace std;
ifstream fin ("cautbin.in");
ofstream fout ("cautbin.out");
int numere[VMAX];
int n;
int cb_max(int nr)
{
int st, dr, mij;
st=0;
dr=n+1;
while(dr-st>1)
{
mij=(st+dr)/2;
if(numere[mij]<=nr)
st=mij;
else
dr=mij;
}
return st;
}
int cb_min(int nr)
{
int st, dr, mij;
st=0;
dr=n+1;
while(dr-st>1)
{
mij=(st+dr)/2;
if(numere[mij]>=nr)
dr=mij;
else
st=mij;
}
return dr;
}
int main()
{
int m,i,j,k,t,q,nr,minim,maxim,st,dr,mij;
fin>>n;
for(int i=1;i<=n;i++)
fin>>numere[i];
fin>>m;
while(m--)
{
fin>>i>>j;
if(i==0)
{
nr=cb_max(j);
if(numere[nr]==j)
fout<<nr<<'\n';
else
fout<<"-1\n";
}
else if(i==1)
{
fout<<cb_max(j)<<'\n';
}
else
{
fout<<cb_min(j)<<'\n';
}
}
return 0;
}