Pagini recente » Cod sursa (job #2632502) | Probleme de Taietura | Cod sursa (job #2834112) | Cod sursa (job #1366891) | Cod sursa (job #2297785)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("cautbin.in");
ofstream fout ("cautbin.out");
int n, v[ 100005 ], i, m, logn, tip, x, lg;
int main()
{
fin >> n;
for ( i = 1; i <= n; i++ )
{
fin>> v[ i ];
}
fin >> m;
for ( logn = 1; logn < n; logn <<= 1 );
for ( ; m; m-- )
{
fin >> tip >> x;
if( tip <= 1 )
{
for ( i = 0, lg = logn; lg; lg >>= 1 )
{
if ( i + lg <= n && v[ i + lg ] <= x )
i += lg;
}
if ( tip == 0 && v[ i ] != x )
fout << -1 << '\n';
else
fout << i << '\n';
}
else if ( tip == 2 )
{
for ( i = n, lg = logn; lg; lg >>= 1 )
{
if ( i - lg >= 1 && v[ i - lg ] >= x )
i -= lg;
}
fout << i << '\n';
}
}
return 0;
}