Pagini recente » Cod sursa (job #980640) | Cod sursa (job #101576) | Cod sursa (job #1357920) | Cod sursa (job #729809) | Cod sursa (job #2349103)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int n,m;
int c[100001];
int cautbin1(int x)
{
int poz=0;
for(int i=1<<30;i>0;i>>=1){
if(poz+i<=n)
if(c[poz+i]<=x)
poz+=i;
}
if(c[poz]==x)
return poz;
else
return -1;
}
int cautbin2(int x)
{
int poz=0;
for(int i=1<<30;i>0;i>>=1){
if(poz+i<=n)
if(c[poz+i]<=x)
poz+=i;
}
return poz;
}
int cautbin3(int x)
{
int poz=0;
for(int i=1<<30;i>0;i>>=1){
if(poz+i<=n)
if(c[poz+i]<=x-1)
poz+=i;
}
return poz+1;
}
int main()
{
in>>n;
for(int i=1;i<=n;++i){
in>>c[i];
}
in>>m;
int t,x;
for(int i=1;i<=m;++i){
in>>t>>x;
if(t==0)
cout<<cautbin1(x);
if(t==1)
cout<<cautbin2(x);
if(t==2)
cout<<cautbin3(x);
cout<<'\n';
}
return 0;
}