Pagini recente » Istoria paginii utilizator/filestraffff | Istoria paginii utilizator/ubb_hakunamatata | Cod sursa (job #2672279) | Cod sursa (job #2485092) | Cod sursa (job #2029852)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin ("cautbin.in");
ofstream fout ("cautbin.out");
int n,m,p,u,mid,i,ok,test,x,v[100001];
int main(){
fin>>n;
for(i=1;i<=n;i++)
fin>>v[i];
fin>>m;
for(i=1;i<=m;i++){
fin>>test>>x;
p=1;
u=n;
ok=1;
while(p<=u){
mid=p+(u-p)/2;
if(test==0){
ok=0;
if(v[mid]==x && v[mid+1]!=v[mid]){
fout<<mid<<"\n";
ok=1;
break;
}
}
else{
if(test==1){
if(v[mid]<=x && (v[mid+1]>x || v[mid]==u)){
fout<<mid<<"\n";
break;
}
}
else{
if(v[mid]>=x && (v[mid-1]<x || mid==u)){
fout<<mid<<"\n";
break;
}
}
}
if(test==0 || test==1){
if(v[mid]<=x)
p=mid+1;
else
u=mid-1;
}
if(test==2){
if(v[mid]<x)
p=mid+1;
else
u=mid-1;
}
}
if(!ok)
fout<<"-1\n";
}
}