Pagini recente » Cod sursa (job #1736784) | Cod sursa (job #2376051) | Cod sursa (job #2300850) | Cod sursa (job #475928) | Cod sursa (job #562791)
Cod sursa(job #562791)
# include <fstream>
using namespace std;
int t, x, n, tip, i;
int a[ 100001 ];
int cautbin1 ( int x ) {
int i, cnt = 1 << 17;
for ( i = 1; cnt; cnt >>= 1 )
if ( i + cnt <= n )
if ( a[ i + cnt ] <= x ) i += cnt;
if ( !tip && a[ i ] != x ) return -1;
return i;
}
int cautbin2 ( int x ) {
int i, cnt = 1 << 17;
for ( i = n; cnt; cnt >>= 1 )
if ( i - cnt >= 1 )
if ( a[ i - cnt ] >= x ) i -= cnt;
return i;
}
int main () {
ifstream f ( "cautbin.in" );
ofstream g ( "cautbin.out");
for ( f >> n, i = 1; i <= n; ++i ) f >> a[ i ];
for ( f >> t; t; --t ) {
f >> tip >> x;
if ( tip < 2 ) g << cautbin1 ( x ) << '\n';
else g <<cautbin2 ( x ) << '\n';
}
g.close ();
return 0;
}