Pagini recente » Cod sursa (job #1072248) | Cod sursa (job #842625) | Cod sursa (job #1670007) | Cod sursa (job #2786403) | Cod sursa (job #2077324)
#include <fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int main(){
int N, sN[100002], M, x, intrebare;
fin >> N;
for( int i = 1 ; i <= N ; ++i ){
fin >> sN[i];
}
fin >> M;
for( int fg = 1 ; fg <= M ; ++fg ){
fin >> intrebare >> x;
if( intrebare == 0 ){
int st = -1, dr = N, mid;
while( dr - st > 1 ){
mid = st + (dr - st) / 2;
if( x < sN[mid] ) dr = mid;
else st = mid;
}
if( sN[N] == x ) fout << N << "\n";
else if( st == N || sN[st] != x ){
fout << -1 << "\n";
}else fout << st << "\n";
}else if (intrebare == 1){
int st = -1, dr = N, mid;
while( dr - st > 1 ){
mid = st + (dr - st) / 2;
if( x < sN[mid] ) dr = mid;
else st = mid;
}
if( sN[N] <= x) fout << N << "\n";
else fout << st << "\n";
}else if( intrebare == 2 ){
int st = -1, dr = N, mid;
while( dr - st > 1 ){
mid = st + (dr - st) / 2;
if( x > sN[mid] ) st = mid;
else dr = mid;
}
fout << dr << "\n";
}
}
}