Nu aveti permisiuni pentru a descarca fisierul grader_test12.in
Cod sursa(job #1293132)
| Utilizator | Data | 15 decembrie 2014 14:38:47 | |
|---|---|---|---|
| Problema | Cautare binara | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 1.04 kb |
#include <fstream>
#define MAXN 100000
using namespace std;
int v[MAXN];
int n, m;
int main() {
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
fin >> n;
for (int i = 0; i < n; ++i) {
fin >> v[i];
}
int m;
int op;
int x;
fin >> m;
for (int i = 0 ; i < m; ++i) {
fin >> op >> x;
int st = 0;
int dr = n-1;
int mij;
int sol = -1;
if (op == 1) {
while (st <= dr) {
mij = (st + dr) / 2;
if (x >= v[mij]) {
sol = mij;
st = mij + 1;
} else {
dr = mij - 1;
}
}
fout << (v[sol] == x ? sol + 1 : -1) << endl;
}
if (op == 1) {
while (st <= dr) {
mij = (st + dr) / 2;
if (x >= v[mij]) {
sol = mij;
st = mij + 1;
} else {
dr = mij - 1;
}
}
fout << sol + 1 << endl;
}
if (op == 2) {
while (st <= dr) {
mij = (st + dr) / 2;
if (x <= v[mij]) {
sol = mij;
dr = mij - 1;
} else {
st = mij + 1;
}
}
fout << sol + 1 << endl;
}
}
fout << endl;
}