Pagini recente » Cod sursa (job #536193) | Cod sursa (job #2524335) | Cod sursa (job #1287004) | Cod sursa (job #3206404) | Cod sursa (job #2786858)
#include <fstream>
using namespace std;
int v[100001];
int main() {
ifstream cin("cautbin.in");
ofstream cout("cautbin.out");
int n, m, i, p, x, put2, cop, poz, last;
cin>>n;
for( i = 1; i <= n; i++ ) {
cin>>v[i];
}
cop = 1;
while( cop <= n ) {
cop *= 2;
}
cop /= 2;
cin>>m;
while( m-- ) {
cin>>p>>x;
put2 = cop;
poz = 0;
last = -1;
if( p == 0 ) {
while( put2 ) {
if( ( poz | put2 ) <= n ) {
if( v[poz | put2] < x ) {
poz |= put2;
}
}
if( ( poz | put2 ) <= n ) {
if( v[poz | put2] == x ) {
poz |= put2;
last = poz;
}
}
put2 /= 2;
}
cout<<last;
} else if( p == 1 ) {
while( put2 ) {
if( ( poz | put2 ) <= n ) {
if( v[poz | put2] <= x ) {
poz |= put2;
last = poz;
}
}
put2 /= 2;
}
cout<<last;
} else {
while( put2 ) {
if( ( poz | put2 ) <= n) {
if( v[poz | put2] < x ) {
poz |= put2;
last = poz;
}
}
put2 /= 2;
}
cout<<last + 1;
}
cout<<"\n";
}
return 0;
}