Pagini recente » Cod sursa (job #870202) | Cod sursa (job #499704) | Cod sursa (job #1203209) | Cod sursa (job #2041727) | Cod sursa (job #1476199)
#include <iostream>
#include <fstream>
#define MAX 100000
using namespace std;
int n, a[MAX + 1];
int CautaBinar(int stg, int drp, int x) {
if(stg > drp) {
return -1;
}
int middle = (stg + drp) / 2;
if(a[middle] == x) {
return middle;
} else if(x < a[middle]) {
return CautaBinar(stg, middle - 1, x);
} else {
return CautaBinar(middle + 1, drp, x);
}
}
int main() {
int i, m, op, x, poz;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
fin >> n;
for(i = 1; i <= n; ++i) {
fin >> a[i];
}
fin >> m;
for(i = 0; i < m; ++i) {
fin >> op >> x;
poz = CautaBinar(1, n, x);
switch(op) {
case 0:
fout << poz << "\n";
break;
case 1:
while(a[poz] <= x) {
++poz;
}
fout << poz - 1 << "\n";
break;
case 2:
while(a[poz] >= x) {
--poz;
}
fout << poz + 1 << "\n";
break;
}
}
fin.close();
fout.close();
return 0;
}