Pagini recente » Cod sursa (job #813278) | Cod sursa (job #3254794) | Cod sursa (job #527960) | Cod sursa (job #1724389) | Cod sursa (job #2062272)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int v[100001], pas, r, n;
int cb0 ( int x ) {
r = 0;
pas = 1 << 16;
while ( pas != 0 ) {
if ( r + pas <= n && v[r+pas] <= x ) {
r += pas;
}
pas /= 2;
}
if ( v[r] != x )
r = -1;
return r;
}
int cb1 ( int x ) {
r = 0;
pas = 1 << 16;
while ( pas != 0 ) {
if ( r + pas <= n && v[r+pas] <= x ) {
r += pas;
}
pas /= 2;
}
return r;
}
int cb2 ( int x ) {
r = 0;
pas = 1 << 16;
while ( pas != 0 ) {
if ( r + pas <= n && v[r+pas] < x )
r += pas;
pas /= 2;
}
return 1+r;
}
int main()
{
int i, x, m, tip;
f >> n;
for ( i = 1; i <= n; i++ ) {
f >> v[i];
}
f >> m;
for ( i = 0; i < m; i++ ) {
f >> tip >> x;
if ( tip == 0 )
g << cb0(x);
else if ( tip == 1 )
g << cb1(x);
else
g << cb2(x);
g << "\n";
}
f.close();
g.close();
return 0;
}