Pagini recente » Cod sursa (job #2621157) | Cod sursa (job #1841476) | Cod sursa (job #2926390) | Cod sursa (job #1032014) | Cod sursa (job #348657)
Cod sursa(job #348657)
#include <iostream>
#include <fstream>
using namespace std;
#define NMAX 100010
#define fin "cautbin.in"
#define fout "cautbin.out"
int N, M, v[NMAX];
int searchMax(int x)
{
int lo, hi, mid;
lo = 1; hi = N;
while ( lo <= hi )
{
mid = lo + (hi-lo)/2;
if ( v[mid] <= x )
lo = mid + 1;
else
hi = mid - 1;
}
return lo - 1;
}
int searchMin(int x)
{
int lo, hi, mid;
lo = 1; hi = N;
while ( lo <= hi )
{
mid = lo + (hi-lo)/2;
if ( x <= v[mid] )
hi = mid - 1;
else
lo = mid + 1;
}
return hi + 1;
}
int main()
{
ifstream f1(fin);
ofstream f2(fout);
f1 >> N;
for ( int i = 1; i <= N; ++i )
f1 >> v[i];
f1 >> M;
for ( ; M--; )
{
int op, x, posM;
f1 >> op >> x;
posM = searchMax(x);
if ( op == 0 )
if ( v[posM] != x )
f2 << "-1\n";
else
f2 << posM << "\n";;
if ( op == 1 )
f2 << posM << "\n";
if ( op == 2 )
{
posM = searchMin(x);
f2 << posM << "\n";
}
}
return 0;
}