Pagini recente » Cod sursa (job #1829523) | Cod sursa (job #3225286) | Cod sursa (job #2691624) | Cod sursa (job #2717277) | Cod sursa (job #2795313)
#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, ok = 0;
for(i = 0, l = p; l > 0; l>>=1)
if(i+l <= n && a[i+l] == x) i+=l;
fout << (i ? i : -1);
break;
}
case 1:
{
int i, l, ok = 0;
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, ok = 0;
x--;
for(i = 0, l = p; l > 0; l>>=1)
if(i+l <= n && a[i+l] <= x) i+=l;
fout << i+1;
break;
}
}
fout << "\n";
}
return 0;
}