Pagini recente » Cod sursa (job #795378) | Cod sursa (job #2736452) | Monitorul de evaluare | Cod sursa (job #795340) | Cod sursa (job #1391014)
#include <fstream>
using namespace std;
ifstream in ("cautbin.in");
ofstream out ("cautbin.out");
int v[100001], L, n, m, i, x, a;
long long pas;
int main()
{
in >> n;
L=31;
for(i=1; i<=n; i++)
{
in >> v[i];
}
in >> m;
while(m>0)
{
in >> a >> x;
m--;
if(a==2)
{
pas=1LL<<L;
i=0;
while(pas!=0)
{
if(i + pas <= n && v[i+pas]<x)
{
i+=pas;
}
pas/=2;
}
out << i+1 << "\n";
}
if(a==1)
{
pas=1LL<<L;
i=0;
while(pas!=0)
{
if(i + pas <= n && v[i+pas]<=x)
{
i+=pas;
}
pas/=2;
}
out << i << "\n";
}
if(a==0)
{
pas = 1LL << 31;
i=0;
while(pas!=0)
{
if(i + pas <= n && v[i+pas]<=x)
{
i+=pas;
}
pas/=2;
}
if(v[i]==x)
{
out << i << "\n";
}
else
out << -1 << "\n";
}
}
return 0;
}