Pagini recente » Cod sursa (job #1092784) | Cod sursa (job #1238969) | Cod sursa (job #1952041) | Cod sursa (job #1731513) | Cod sursa (job #2592830)
#include <fstream>
using namespace std;
ifstream fin ("cautbin.in");
ofstream fout ("cautbin.out");
#define nmax 100005
int n, i, v[ nmax ], logn, lg, tip, x, m;
int main ()
{
fin >> n;
for( i = 1; i <= n; i++ )
fin >> v[ i ];
for( logn = 1; logn < n; logn = logn << 1 );
for ( fin>>m; m; m-- )
{
fin>> tip >> x;
if ( tip <= 1 )
{
for ( i = 1, lg = logn; lg; lg = lg >> 1 )
if ( i + lg <= n && v[ i + lg ] <= x )
i += lg;
if ( tip == 1 )
fout<< i << '\n';
else if ( x == v[ i ] )
fout<< i << '\n';
else
fout<< -1 << '\n';
}
else if ( tip == 2 )
{
for ( i = n, lg = logn; lg; lg = lg >> 1 )
if ( i - lg >= 1 && v[ i - lg ] >= x )
i -= lg;
fout<< i <<'\n';
}
}
}