Pagini recente » Cod sursa (job #2193120) | Cod sursa (job #936409) | Cod sursa (job #1106397) | Cod sursa (job #2743156) | Cod sursa (job #2681855)
#include <fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int v[100001];
int Pozitiex(int x, int v[], int n) {
int st = 0, dr = n - 1, mij;
while (st <= dr) {
mij = (st + dr) / 2;
if (v[mij] == x)
return mij;
if (v[mij] < x)
st = mij + 1;
else
dr = mij - 1;
}
return -1;
}
int Pozminx(int x, int v[], int n) {
int st = 0, dr = n - 1, mij, poz;
while (st <= dr) {
mij = (st + dr)/ 2;
if (v[mij] <= x)
poz = mij, st = mij + 1;
else
dr = mij - 1;
}
return poz;
}
int Pozmaxx(int x, int v[], int n) {
int st = 0, dr = n - 1, mij, poz;
while (st <= dr) {
mij = (st + dr) / 2;
if (v[mij] >= x)
poz = mij, dr = mij - 1;
else
st = mij + 1;
}
return poz;
}
int main() {
int n, m, x, poz;
short C;
fin >> n;
for (int i = 0; i < n; ++ i)
fin >> v[i];
fin >> m;
for (int i = 0; i < m; ++ i) {
fin >> C >> x;
if (C == 0) {
poz = Pozitiex(x, v, n);
while (v[poz] == x)
++ poz;
fout << poz << '\n';
continue;
}
if (C == 1) {
fout << Pozminx(x, v, n) + 1 << '\n';
continue;
}
fout << Pozmaxx(x, v, n) + 1 << '\n';
}
return 0;
}