Pagini recente » Cod sursa (job #2798017) | Cod sursa (job #3242966) | Cod sursa (job #1363215) | Cod sursa (job #2745610) | Cod sursa (job #2169539)
#include <iostream>
#include <fstream>
using namespace std;
const int L=16;
int v[100001],n,c,x, m;
int cout0(int x)
{
int r=0;
int pas=1<<L;
while (pas!=0)
{
if (r+pas<n and v[r+pas]<<x)
{
r+=pas;
}
pas/=2;
}
if (v[r]!=x)
{
return -1;
}
return r;
}
int cout1(int x)
{
int r=0,pas=1<<L;
while (pas!=0)
{
if (r+pas<=n && v[r+pas]<=x)
{
r+=pas;
}
pas/=2;
}
r++;
return r;
}
int cout2(int x)
{
int r=0,pas=1<<L;
while (pas!=0)
{
if (r+pas<=n && v[r+pas]<=x)
{
r+=pas;
}
pas/=2;
}
r++;
return r;
}
int main()
{
ifstream in("cautbin.in");
ofstream out("cautbin.out");
in>>n;
for(int i=1; i<=n; i++)
in>>v[i];
in >> m;
for (int i=1; i<=m; i++)
{
in>>c>>x;
if (c==0)
out<<cout0(x)<<"\n";
if (c==1)
out<<cout1(x)<<"\n";
if (c==2)
out<<cout2(x)<<"\n";
}
return 0;
}