Pagini recente » Clasament winners4 | Clasament just_4_me | Cod sursa (job #1844670) | Autentificare | Cod sursa (job #1890091)
#include <fstream>
#include <vector>
using namespace std;
int cautbin(const vector<int> &v, int x)
{
int i = 0, j = v.size();
while (i < j) {
int m = i + (j-i)/2;
if (x < v[m]) {
j = m-1;
} else if (x > v[m]) {
i = m+1;
} else {
return m;
}
}
return -2;
}
int upper(const vector<int> &v, int x)
{
int i = 0, j = v.size();
while (i < j) {
int m = i + (j-i)/2;
if (x > v[m]) {
i = m+1;
} else {
j = m;
}
}
return i;
}
int lower(const vector<int> &v, int x)
{
int i = 0, j = v.size();
while (i < j) {
int m = i + (j-i)/2;
if (x < v[m]) {
j = m-1;
} else {
i = m;
}
}
return i;
}
int main()
{
ios_base::sync_with_stdio(false);
ifstream f("cautbin.in");
int n;
f >> n;
vector<int> v(n);
for (int i = 0; i < n; ++i) {
f >> v[i];
}
int m;
f >> m;
ofstream g("cautbin.out");
for (int i = 0; i < m; ++i) {
int op, x;
f >> op >> x;
if (op == 0) {
g << cautbin(v, x) + 1 << "\n";
} if (op == 1) {
g << lower(v, x) + 1 << "\n";
} if (op == 2) {
g << upper(v, x) + 1 << "\n";
}
}
f.close();
g.close();
return 0;
}