Pagini recente » Cod sursa (job #184848) | Cod sursa (job #2894879) | Cod sursa (job #1255948) | Cod sursa (job #181214) | Cod sursa (job #2618829)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
int f1(int val, vector<int> & v) {
int mid, l=0, r=v.size();
while (l < r) {
mid = (l + r) / 2;
if (v[mid] <= val)
l = mid + 1;
else
r = mid - 1;
}
mid = (l + r) / 2;
if (v[mid] == val)
return mid + 1;
return -1;
}
int f2(int val, vector<int>& v) {
int mid, r = v.size(), l=0;
while (l < r) {
mid = (l + r) / 2;
if (v[mid] <= val)
l = mid + 1;
else
r = mid;
}
mid = (r + l) / 2;
if (v[mid] > val)
mid--;
return mid;
}
int f3(int val, vector<int>& v) {
int mid, r = v.size(), l = 0;
while (l < r) {
mid = (l + r) / 2;
if (v[mid] <= val)
l = mid + 1;
else
r = mid;
}
mid = (r + l) / 2;
if (v[mid] < val)
mid++;
return mid;
}
int main()
{
ifstream in("cautbin.in");
ofstream out("cautbin.out");
vector<int>v;
int n, m, x, cerinta, val;
in >> n;
for (int i = 0; i < n; i++) {
in >> x;
v.push_back(x);
}
in >> m;
for (int i = 0; i < m; i++) {
in >> cerinta;
in >> val;
if (cerinta == 0) {
out<<f1(val, v);
}
else if (cerinta == 1) {
out << f2(val, v);
}
else if (cerinta == 2) {
out << f3(val, v);
}
}
in.close();
out.close();
return 0;
}