Pagini recente » Cod sursa (job #1155329) | Cod sursa (job #1026222) | Cod sursa (job #1557125) | Cod sursa (job #31467) | Cod sursa (job #2399711)
#include <fstream>
#define Nmax 100005
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int n,v[Nmax],m,p,x;
int bin0( int x ){
int li = 1;
int ls = n;
int mij ;
while( li <= ls){
mij = (ls + li) / 2;
if(v[mij] <= x){
li = mij + 1;
}else{
ls = mij - 1;
}
}
mij = (ls + li) / 2;
if(v[mij] > x)
mij -- ;
if( v[mij] == x)
return mij;
return -1;
}
int bin1(int x){
int li = 1;
int ls = n;
int mij;
while(li < ls){
mij = (ls + li) / 2;
if(v[mij] <= x){
li = mij + 1;
}else{
ls = mij;
}
}
mij = (ls + li) / 2;
if(v[mij] > x)
mij--;
return mij;
}
int bin2(int x){
int li = 1;
int ls = n;
int mij;
while ( li < ls ){
mij = (ls + li) / 2;
if(v[mij] < x){
li = mij + 1;
}else{
ls = mij;
}
}
mij = (ls + li) / 2;
if(v[mij] < x)
mij++;
return mij;
}
int main(){
int i;
f >> n;
for( i = 1 ; i <= n; i++){
f >> v[i];
}
f >> m;
for( i = 1 ; i <= m ; i++){
f >> p >> x;
if( p == 0 ){
g << bin0 (x) << "\n";
}else if( p == 1){
g << bin1 (x) << "\n";
}else{
g << bin2 (x) << "\n";
}
}
return 0;
}