Pagini recente » Cod sursa (job #2115514) | Cod sursa (job #831785) | Cod sursa (job #222491) | Cod sursa (job #508046) | Cod sursa (job #2209235)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("cautbin.in");
ofstream fout ("cautbin.out");
#define nMAX 100005
int n, T, v[ nMAX ], i, logn, log, tip, x;
int main()
{
fin>> n;
for ( i = 1 ; i <= n; i++ )
{
fin>> v[ i ];
}
fin>> T;
for ( logn = 1; logn <= n; logn <<= 1 );
for ( ; T; T-- )
{
fin>>tip>>x;
if ( tip <= 1 )
{
for ( i = 0, log = logn; log; log >>= 1 )
{
if ( i + log <= n && v[ i + log ] <= x )
{
i += log;
}
}
if ( tip == 0 && v[ i ] != x )
fout<< -1 << '\n';
else
fout<< i << '\n';
}
else if ( tip == 2 )
{
for ( i = logn, log = logn >> 1 ; log ; log >>= 1 )
{
if ( v[ i - log ] >= x )
i -= log;
}
fout<< i << '\n';
}
}
return 0;
}