Pagini recente » Cod sursa (job #2771284) | Cod sursa (job #1466384) | Cod sursa (job #2303400) | Cod sursa (job #2386723) | Cod sursa (job #3319116)
#include "bits/stdc++.h"
using namespace std;
ifstream f ("cautbin.in");
ofstream g ("cautbin.out");
int check0 (int i,int x)
{
if (i<=x) return 1;
return 0;
}
int check1 (int i,int x)
{
if (i<=x) return 1;
return 0;
}
int check2 (int i,int x)
{
if (i<x) return 1;
return 0;
}
int v[100002];
int main ()
{
int n,x,q,c,val,sol,exp,try1,bit,n1;
f>>n;
for (x=1;x<=n;x++)
{
f>>v[x];
}
f>>q;
exp=0;n1=n;
while (n1>0) {exp++;n1/=2;}
for (x=1;x<=q;x++)
{
f>>c>>val;
if (c==0)
{
sol=0;
for (bit=exp;bit>=0;bit--)
{
try1=sol+(1<<bit);
if (try1<=n && check0(v[try1],val)) sol=try1;
}
if (v[sol]==val) g<<sol<<'\n';
else g<<-1<<'\n';
}
else if (c==1)
{
sol=0;
for (bit=exp;bit>=0;bit--)
{
try1=sol+(1<<bit);
if (try1<=n && check1(v[try1],val)) sol=try1;
}
g<<sol<<'\n';
}
else if (c==2)
{
sol=0;
for (bit=exp;bit>=0;bit--)
{
try1=sol+(1<<bit);
if (try1<=n && check2(v[try1],val)) sol=try1;
}
g<<sol+1<<'\n';
}
}
f.close ();
g.close ();
return 0;
}