Pagini recente » Cod sursa (job #741918) | Cod sursa (job #3239671) | Cod sursa (job #3129856) | Cod sursa (job #760041) | Cod sursa (job #2795261)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("cautbin.in");
ofstream fout ("cautbin.out");
const int MAXN = 100003;
int n, t, a[MAXN];
int main()
{
fin >> n;
for(int i = 1; i <= n; i++)
fin >> a[i];
fin >> t;
int op, x, p = 1;
while(p*2 <= n) p*=2;
for(int k = 0; k < t; k++)
{
fin >> op >> x;
switch(op){
case 0:
{
int i, l;
for(i = 0, l = p; l > 0; l>>=1)
if(i+l <= n && a[i+l] <= x) i+=l;
fout << (a[i]==x ? i : -1);
break;
}
case 1:
{
int i, l;
for(i = 0, l = p; l > 0; l>>=1)
if(i+l <= n && a[i+l] <= x) i+=l;
fout << i;
break;
}
case 2:
{
int i, l;
for(i = n, l = p; l > 0; l>>=1)
if(i-l >= 1 && a[i-l] >= x) i-=l;
fout << i;
break;
}
}
fout << "\n";
}
return 0;
}