Pagini recente » Cod sursa (job #2557662) | Cod sursa (job #1815276) | Cod sursa (job #1842195) | Cod sursa (job #1959255) | Cod sursa (job #2159583)
#include <iostream>
#include <fstream>
#define c 100001
using namespace std;
int a[c], n;
int task0(int x) {
int ls = 1, ld = n, r = -1, m;
while (ls <= ld) {
m = (ls + ld)/2;
if (x == a[m]) {
r = m;
}
if (x >= a[m])
ls = 1 + m;
else
if (x <= a[m])
ld = m -1;
}
return r;
}
int task1(int x) {
int ls = 1, ld = n, poz, m;
while (ls <= ld) {
m = (ld + ls)/2;
if (x >= a[m]) {
ls = m + 1;
poz = m;
}
else
if (x <= a[m]) {
ld = m -1;
}
}
return poz ;
}
int task2(int x) {
int ls, ld, poz, m;
ls = 1;
ld = n;
while (ls <= ld) {
m = (ls + ld)/2;
if (x <= a[m]) {
ld = m-1;
poz = m;
}
else
if (x >= a[m])
ls = m +1 ;
}
return poz ;
}
int main() {
int m, nr, x;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
f >> n;
for (int i = 1; i <= n; i++) {
f >> a[i];
}
f >> m;
for (int i=1; i <= m; i++) {
f >> nr >> x;
switch(nr) {
case 0:
g << task0(x) << '\n';
break;
case 1:
g << task1(x) << '\n';
break;
case 2:
g << task2(x) << '\n';
break;
}
}
f.close();
g.close();
return 0;
}