Pagini recente » Borderou de evaluare (job #3196042) | Cod sursa (job #1590977) | Cod sursa (job #1046705) | Monitorul de evaluare | Cod sursa (job #2334560)
#include <fstream>
using namespace std;
ifstream cin("cautbin.in");
ofstream cout("cautbin.out");
int v[100001];
int n;
int cbin(int val){
int pos=0,i;
for(int msk=1<<20;msk>0;msk/=2)
if(pos+msk<=n && v[pos+msk]<=val)pos+=msk;
return pos;
}
int main()
{
long long k,cop,b,i,l,m,c,sum=0;
cin>>n;
for(i=1;i<=n;i++){
cin>>v[i];
}
cin>>k;
for(i=1;i<=k;i++){
cin>>c>>m; cop=m;
if(c==0){
cop=cbin(m);
if(v[cop]==m)
cout<<cop;
else
cout<<-1;
}
else
if(c==1)
{
cop=cbin(m);
cout<<cop;
}
else
{
cop=cbin(m); //cout<<cop<<" ";
while(v[cop]>=m)
{
cop--;
}
cout<<cop+1;
}
cout<<'\n';
}
return 0;
}