Pagini recente » Cod sursa (job #496456) | Cod sursa (job #1235309) | Cod sursa (job #299841) | Cod sursa (job #2906760) | Cod sursa (job #784523)
Cod sursa(job #784523)
# include <fstream>
# define dim 100005
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int v[dim],n,m,x,y,mij,li,ls,p;
int caut_0( int h ){
li = 1;
ls = n;
p = 0;
while( li <= ls ){
mij = (li + ls) / 2;
if( v[mij] == h && p < mij ) p = mij;
if( v[mij] <= h )
li = mij + 1;
else
ls = mij - 1;
}
if( p )
return p;
else
return -1;
}
int caut_1( int h ){
li = 1;
ls = n;
p = 0;
while( li <= ls ){
mij = (li + ls) / 2;
if( v[mij] <= h && p < mij ) p = mij;
if( v[mij] <= h )
li = mij + 1;
else
ls = mij - 1;
}
return p;
}
int caut_2( int h ){
li = 1;
ls = n;
p = dim;
while( li <= ls ){
mij = (li+ls)/2;
if( v[mij] >= h && p > mij ) p = mij;
if( v[mij] < h )
li = mij + 1;
else
ls = mij - 1;
}
return p;
}
int main(){
int i;
f >> n;
for( i = 1 ; i <= n ; ++i)
f >> v[i];
f >> m;
for( i = 1 ; i <= m ; ++i ){
f >> x >> y;
switch (x) {
case 0 : g << caut_0(y) << '\n';
break;
case 1 : g << caut_1(y) << '\n';
break;
case 2 : g << caut_2(y) << '\n';
}
}
f.close();
g.close();
return 0;
}