Pagini recente » Istoria paginii runda/simulare_lot_seniori_1 | Cod sursa (job #232314) | Cod sursa (job #1397939) | Cod sursa (job #2014660) | Cod sursa (job #2574262)
#include <bits/stdc++.h>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int n, m;
int v[100001];
int tip, x;
int rep, rep1;
void Read()
{
f>>n;
for(int i = 1;i <= n;++i)
f>>v[i];
f>>m;
}
void Solve()
{
for(rep = 1;rep <= n; rep <<= 1);
for(int j = 1;j <= m;++j)
{
f>>tip>>x;
int i = 0;
if(tip < 2)
{
for(rep1 = rep,i = 0;rep1; rep1 >>= 1)
if(i + rep1 <= n && v[i + rep1] <= x)
i += rep1;
if(tip == 0 && v[i] != x)
g<<-1<<'\n';
else
g<<i<<'\n';
}
else
{
for(rep1 = rep,i = n;rep1;rep1 >>= 1)
if(i - rep1 > 0 && v[i - rep1] >= x)
i -= rep1;
g<<i<<'\n';
}
}
}
int main()
{
Read();
Solve();
return 0;
}