Pagini recente » Cod sursa (job #280735) | Cod sursa (job #2792845) | Cod sursa (job #2143429) | Cod sursa (job #852904) | Cod sursa (job #1773304)
#include "fstream"
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
const int NMAX = 100005;
int N, M;
int a[NMAX];
int getBiggest(int x) {
int pow = 1;
int res = 0;
while(pow * 2 <= N) {
pow *= 2;
}
while(pow) {
if(res + pow <= N && a[res + pow] <= x) {
res += pow;
}
pow /= 2;
}
return res;
}
int getSmallest(int x) {
int pow = 1;
int res = 0;
while(pow * 2 <= N) {
pow *= 2;
}
while(pow) {
if(res + pow <= N && a[res + pow] < x) {
res += pow;
}
pow /= 2;
}
return res + 1;
}
int main() {
fin >> N;
for(int i = 1 ; i <= N ; i++) {
fin >> a[i];
}
fin >> M;
int type, x;
for(int i = 1 ; i <= M ; i++) {
fin >> type >> x;
if(type < 2) {
fout << getBiggest(x) << '\n';
}
else {
fout << getSmallest(x) << '\n';
}
}
return 0;
}