Pagini recente » Cod sursa (job #1344353) | Cod sursa (job #929026) | Cod sursa (job #2100725) | Cod sursa (job #2885478) | Cod sursa (job #2693947)
#include <bits/stdc++.h>
#define nmx 100000
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int st, dr, mij;
int v[nmx+1];
void cautBin(int lim, int nr){
st = 1;
dr = lim;
while(st != dr) {
mij = (st+dr)/2;
if (v[mij] >= nr) {
dr = mij;
} else {
st = mij+1;
}
}
}
int n, m, x;
void solveCase0(int nr) {
cautBin(n, nr);
if (v[st] == nr) {
while (v[st] == nr)
st++;
g << st-1 << '\n';
} else {
g << -1 << '\n';
}
}
void solveCase1(int nr) {
cautBin(n, nr);
while (st <= n && v[st] <= nr)
st++;
g << st-1 << '\n';
}
void solveCase2(int nr) {
cautBin(n, nr);
while (v[st] >= nr)
st--;
g << st+1 << '\n';
}
int main() {
f >> n;
for (int i = 1; i <= n; i++) {
f >> x;
v[i] = x;
}
f >> m;
int test;
for (int i = 1; i <= m; i++) {
f >> test >> x;
if (test == 0)
solveCase0(x);
else if (test == 1)
solveCase1(x);
else if (test == 2)
solveCase2(x);
}
return 0;
}