Pagini recente » Cod sursa (job #2907771) | Cod sursa (job #2475765) | Cod sursa (job #923174) | Cod sursa (job #1397015) | Cod sursa (job #2795301)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f ("cautbin.in");
ofstream g ("cautbin.out");
int n,q,p = 1,op,x;
int v[100001];
int main()
{
f >> n;
while(p<=n)
p<<=1;
for(int i = 1; i<=n; i++)
f >>v[i];
f >> q;
for(int i = 1; i<=q; i++)
{
f >> op>>x;
if(op == 0)
{
int j,l;
for(j = 1,l = p; l; l>>=1)
if(j+l<=n && v[j+l]==x)
j+=l;
if(v[j] == x)
g << j<< "\n";
else
{
g <<"-1\n";
}
}
else if(op == 1)
{
int j,l;
for(j = 1, l =p; l!=0; l>>=1)
if(j+l<=n && v[j+l]<=x)
j+=l;
if(v[j] <= x)
g << j<< "\n";
else
g <<"-1\n";
}
else if(op == 2)
{
int j,l;
for(j = n, l = p; l!=0; l>>=1)
if(j-l>=1 && v[j-l]>=x)
j-=l;
if(v[j] >= x)
g << j<< "\n";
else
g <<"-1\n";
}
}
}