Pagini recente » Cod sursa (job #3362344) | Cod sursa (job #3363327) | Cod sursa (job #3363338) | Cod sursa (job #3363412) | Cod sursa (job #3363410)
#include <iostream>
#include <fstream>
using namespace std;
const int VMAX = 100005;
int v[VMAX];
int cautbin0(int v[], int n , int x) {
int st = 0, dr = n - 1, mij;
while (st <= dr) {
mij = (st + dr) / 2;
if (v[mij] <= x) {
st = mij + 1;
} else {
dr = mij - 1;
}
}
if (dr >= 0 && v[dr] == x) {
return dr + 1;
}
return -1;
}
int cautbin1(int v[], int n , int x) {
int st = 0, dr = n - 1, mij;
while (st <= dr) {
mij = (st + dr) / 2;
if (v[mij] <= x) {
st = mij + 1;
} else {
dr = mij - 1;
}
}
return dr + 1;
}
int cautbin2(int v[], int n , int x) {
int st = 0, dr = n - 1, mij;
while (st <= dr) {
mij = (st + dr) / 2;
if (v[mij] < x) {
st = mij + 1;
} else {
dr = mij - 1;
}
}
return st + 1;
}
int main() {
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int n, h, m, k;
if (!(fin >> n)) return 0;
for (int i = 0; i < n; i++) {
fin >> v[i];
}
for (int i = 0; i < h; i++) {
fin >> m >> k;
if (m == 0) {
fout << cautbin0(v, n, k) << "\n";
}
else if (m == 1) {
fout << cautbin1(v, n, k) << "\n";
}
else if (m == 2) {
fout << cautbin2(v, n, k) << "\n";
}
}
return 0;
}