Pagini recente » Cod sursa (job #671366) | Cod sursa (job #2956646) | Cod sursa (job #1874147) | Cod sursa (job #1507592) | Cod sursa (job #1596645)
#include <fstream>
using namespace std;
ifstream cin ("cautbin.in");
ofstream cout ("cautbin.out");
int a[100005], n, m;
int caut( int nr ){
int pas,i;
for(pas=1; pas<n; pas <<=1);
for(i=0; pas; pas >>=1)
if((i+pas<n)&&(a[i+pas]<=nr)) i+=pas;
return i;
}
int caut2( int nr ){
int pas,i;
for(pas=1, i=n; pas; pas >>=1)
if((i-pas>0)&&(a[i-pas]>=nr)) i-=pas;
return i;
}
int main (){
cin >> n;
for(int i(0); i<n; i++) cin >> a[i];
cin >> m;
int x,nr,rz;
for(int i(0); i<m; i++) {
cin >> x >> nr;
if(x==0){
rz=caut(nr);
if(a[rz]==nr) cout << rz+1 << "\n";
else cout << -1 << "\n";
}
if(x==1) cout << caut(nr)+1 << "\n";
if(x==2){
cout << caut2(nr) << "\n";
}
}
return 0;
}