Pagini recente » Cod sursa (job #3149464) | Cod sursa (job #1819957) | Cod sursa (job #2745654) | Cod sursa (job #138130) | Cod sursa (job #1986268)
#include <iostream>
#include <vector>
#include <fstream>
#include <algorithm>
#define ll long long
#define pb push_back
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
const int NLIM = 1e5 + 10;
int N, M;
int v[NLIM];
void f1( int x )
{
int l = 0;
int r = N - 1;
while( l <= r )
{
int m = l + ( r - l ) / 2;
if( v[m] > x )
r = m - 1;
else
l = m + 1;
}
if( v[r] == x && r >= 0 )
fout << r + 1 << "\n";
else
fout << -1 << "\n";
}
void f2( int x )
{
int l = 0;
int r = N - 1;
while( l <= r )
{
int m = l + ( r - l ) / 2;
if( v[m] > x )
r = m - 1;
else
l = m + 1;
//cout << l << " " << r << "\n";
// getchar();
}
fout << r + 1 << "\n";
}
void f3( int x )
{
int l = 0;
int r = N - 1;
while( l <= r )
{
int m = l + ( r - l ) / 2;
if( v[m] >= x )
r = m - 1;
else
l = m + 1;
//cout << l << " " << r << "\n";
//getchar();
}
fout << l + 1 << "\n";
}
int main()
{
fin >> N;
for( int i = 0; i < N; ++i )
fin >> v[i];
fin >> M;
for( int i = 0; i < M; ++i )
{
int t, x;
fin >> t >> x;
if( t == 0 )
{
f1( x );
}
else if( t == 1 )
{
f2( x );
}
else
f3( x );
}
return 0;
}