Pagini recente » Cod sursa (job #1367087) | Cod sursa (job #1091916) | Cod sursa (job #2722850) | Cod sursa (job #1499507) | Cod sursa (job #2585586)
#include <fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
const int nmax=100000;
int v[nmax+1];
int main(){
int n;
fin>>n;
for(int i=1;i<=n;++i){
fin>>v[i];
}
int n2=1;
while(n2<=n){
n2*=2;
}
n2/=2;
int m;
fin>>m;
for(int im=1;im<=m;++im){
int x,y;
fin>>x>>y;
if(x==0){
int sol=0;
for(int i=n2;i>0;i/=2){
if(sol+i<=n&&v[sol+i]<=y){
sol+=i;
}
}
if(v[sol]==y){
fout<<sol<<"\n";
}else{
fout<<"-1\n";
}
}else if(x==1){
int sol=0;
for(int i=n2;i>0;i/=2){
if(sol+i<=n&&v[sol+i]<=y){
sol+=i;
}
}
fout<<sol<<"\n";
}else {
int sol=n+1;
for(int i=n2;i>0;i/=2){
if(sol-i>=1&&v[sol-i]>=y){
sol-=i;
}
}
fout<<sol<<"\n";
}
}
return 0;
}