Pagini recente » Cod sursa (job #1583232) | Cod sursa (job #1899183) | Cod sursa (job #2261528) | Cod sursa (job #2376446) | Cod sursa (job #2279872)
#include <fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
const int N = 100001;
const int L = 16;
int n,m,v[N],q;
int caut0(int x)
{
int pas=1<<L;
int r=0;
while(pas!=0){
if(r+pas<=n && v[r+pas]<=x){
r+=pas;
}
pas/=2;
}
if(v[r]!=x){
r=-1;
}
return r;
}
int caut1(int x)
{
int pas=1<<L;
int r=0;
while (pas!=0){
if(r+pas<=n && v[r+pas]<=x)
r+=pas;
pas/=2;
}
return r;
}
int caut2(int x)
{
int pas=1<<L;
int r=0;
while (pas!=0){
if(r+pas<=n && v[r+pas]<=x)
r+=pas;
pas/=2;
}
r++;
return r;
}
int main()
{
int x;
fin>>n;
for(int i=1;i<=n;++i)
{
fin>>v[i];
}
fin>>m;
for(int j=1;j<=m;++j)
{
fin>>q>>x;
if(q==0){
fout << caut0(x) << '\n';
}
if(q==1){
fout<<caut1(x)<<'\n';
}
if(q==2){
fout<<caut2(x)<<'\n';
}
}
return 0;
}