Pagini recente » Cod sursa (job #2765266) | Cod sursa (job #1112872) | Cod sursa (job #2405148) | Cod sursa (job #2778256) | Cod sursa (job #3319111)
#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;
f>>n;
for (x=1;x<=n;x++)
{
f>>v[x];
}
f>>q;
for (x=1;x<=q;x++)
{
f>>c>>val;
if (c==0)
{
sol=0;exp=log2(n);
for (bit=exp;exp>=0;exp--)
{
try1=sol+(1<<exp);
if (try1<=n && check0(v[try1],val)) sol=try1;
}
if (sol!=0) g<<sol<<'\n';
else g<<-1<<'\n';
}
else if (c==1)
{
sol=0;exp=log2(n);
for (bit=exp;exp>=0;exp--)
{
try1=sol+(1<<exp);
if (try1<=n && check1(v[try1],val)) sol=try1;
}
g<<sol<<'\n';
}
else if (c==2)
{
sol=0;exp=log2(n);
for (bit=exp;exp>=0;exp--)
{
try1=sol+(1<<exp);
if (try1<=n && check2(v[try1],val)) sol=try1;
}
g<<sol+1<<'\n';
}
}
f.close ();
g.close ();
return 0;
}