Pagini recente » Cod sursa (job #2023465) | Cod sursa (job #3193063) | Cod sursa (job #1978320) | Cod sursa (job #2803842) | Cod sursa (job #1586859)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int n,q,a[100005];
int Cbin0(int x)
{ int i,res=0;
for(i=16;i>=0;i--)
if ((res|(1<<i))<=n && a[(res|(1<<i))]<=x) res|=(1<<i);
if (a[res]==x) return res;
else return -1;
}
int Cbin1(int x)
{ int i,res=0;
for(i=16;i>=0;i--)
if ((res|(1<<i))<=n && a[(res|(1<<i))]<=x) res|=(1<<i);
return res;
}
int Cbin2(int x)
{ int i,res=0;
for(i=16;i>=0;i--)
if ((res|(1<<i))<=n && a[(res|(1<<i))]<x) res|=(1<<i);
return res+1;
}
int main()
{ int i,t,x,p;
f>>n;
for(i=1;i<=n;i++)
f>>a[i];
f>>q;
for(i=1;i<=q;i++)
{ f>>t>>x;
if (t==0) p=Cbin0(x);
if (t==1) p=Cbin1(x);
if (t==2) p=Cbin2(x);
g<<p<<"\n";
}
return 0;
}