Pagini recente » Cod sursa (job #322136) | Cod sursa (job #2805117) | Cod sursa (job #1067792) | Cod sursa (job #1933368) | Cod sursa (job #1430286)
#include <fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int n, m, A[100001], x, c, a;
int main()
{
fin >> n;
for(int i = 1; i <= n; i++) fin >> A[i];
fin >> m;
for(int k = 1; k <= m; k++)
{
fin >> c >> x;
if(c == 0)
{
a= x + 1;
int sol = 0, pas = 1;
while(pas <= n) pas *= 2;
for(; pas; pas /= 2)
if(sol + pas <= n && A[sol + pas] <= a)
sol += pas;
if(A[sol] == x) fout << sol << '\n';
else fout << -1 << '\n';
}
else if(c == 1)
{
int sol = 0, pas = 1;
while(pas <= n) pas *= 2;
for(; pas; pas /= 2)
if(sol + pas <= n && A[sol + pas] <= x)
sol += pas;
if(A[sol] <= x) fout << sol << '\n';
else fout << -1 << '\n';
}
else
{
a = x - 1;
int sol = 0, pas = 1;
while(pas <= n) pas *= 2;
for(; pas; pas /= 2)
if(sol + pas <= n && A[sol + pas] <= a)
sol += pas;
fout << sol + 1 << '\n';
}
}
return 0;
}