Pagini recente » Cod sursa (job #715488) | Istoria paginii runda/infostar | Monitorul de evaluare | Cod sursa (job #834435) | Cod sursa (job #2287387)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
int caut( int x, vector <int>& v ){
int stg = 0, drp = (int)v.size() - 1;
while( stg <= drp ){
int mij = ( stg + drp ) / 2;
if( v[mij] == x ){
while( ( mij < drp ) && ( v[mij+1] == x ) )
mij++;
return mij;
}
if ( v[mij] > x )
drp = mij - 1;
else
stg = mij + 1;
}
return drp;
}
int main()
{
vector <int> v;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int N;
fin >> N;
for( int i = 1; i <= N; i++ ){
int aux;
fin >> aux;
v.push_back(aux);
}
int M;
fin >> M;
for( int i = 1; i <= M; i++ ){
int intr, nr;
fin >> intr;
fin >> nr;
int poz = caut( nr, v );
if( intr == 2 ){
while( ( poz > 0 ) && ( v[poz] == nr ) ) poz--;
fout << poz + 2 << '\n';
}
else{
if( (intr == 0) && (v[poz] != nr)){
fout << '-1'<< '\n';
}else
fout << poz + 1<< '\n';
}
}
return 0;
}