Pagini recente » Cod sursa (job #1791759) | Cod sursa (job #2788211) | Cod sursa (job #1418538) | Cod sursa (job #732563) | Cod sursa (job #2430079)
#include <fstream>
using namespace std;
ifstream ci ("cautbin.in");
ofstream co ("cautbin.out");
const int nmax=100000;
int v[nmax+1];
int main ()
{
int n;
ci >> n;
for (int i=1; i<=n; i++)
{
ci >> v[i];
}
int n2=1;
while (n2<=n)
{
n2*=2;
}
n2/=2;
int m;
ci >> m;
for (int j=1; j<=m; j++)
{
int x,y;
ci >> x >> y;
if (x==1)
{
int sol=0,i=n2;
while (i>0)
{
if (sol+i<=n && v[sol+i]<=y)
{
sol+=i;
}
i/=2;
}
co << sol << "\n";
}
else if (x==0)
{
int sol=0,i=n2;
while (i>0)
{
if (sol+i<=n && v[sol+i]<=y)
{
sol+=i;
}
i/=2;
}
if (v[sol]==y)
{
co << sol << "\n";
}
else
{
co << -1 << "\n";
}
}
else
{
int sol=n+1,i=n2;
while (i>0)
{
if (sol-i>=1 && v[sol-i]>=y)
{
sol-=i;
}
i/=2;
}
co << sol << "\n";
}
}
return 0;
}