Pagini recente » Cod sursa (job #1190773) | Cod sursa (job #3153202) | Cod sursa (job #1511709) | Cod sursa (job #1738901) | Cod sursa (job #663705)
Cod sursa(job #663705)
#include<fstream>
#include<cstdio>
const int MaxN = 100001;
const char InFile[] = "cautbin.in";
const char OutFile[] = "cautbin.out";
int n,m,v[MaxN];
int main()
{
freopen( InFile , "r" , stdin );
freopen( OutFile , "w" , stdout );
int i,j,tip,x,BiT,bit;
scanf("%d" , &n );
for( i = 1 ; i <= n ; i++ )
scanf("%d" , &v[i] );
for( BiT = 1 ; BiT <= n ; BiT <<= 1 );
scanf("%d" , &m );
for( j = 0 ; j < m ; j++ )
{
scanf("%d%d" , &tip , &x );
if( tip == 0 )
{
for( bit = BiT , i = 0 ; bit ; bit >>= 1 )
if( i+bit <= n && v[i+bit] <= x )
i += bit;
if( v[i] == x )
printf("%d\n" , i );
else
printf("-1\n" );
continue;
}
if( tip == 1 )
{
for( bit = BiT , i = 0 ; bit ; bit >>= 1 )
if( i+bit <= n && v[i+bit] <= x )
i += bit;
printf("%d\n" , i );
continue;
}
if( tip == 2 )
{
for( bit = BiT , i = n ; bit ; bit >>= 1 )
if( i - bit > 0 && v[i-bit] >= x )
i -= bit;
printf("%d\n" , i );
continue;
}
}
return 0;
}