Pagini recente » Cod sursa (job #1392268) | Cod sursa (job #1605403) | Cod sursa (job #1109439) | Cod sursa (job #2406632) | Cod sursa (job #3160417)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
const string FILE_NAME = "cautbin";
const string input = FILE_NAME + ".in";
const string output = FILE_NAME + ".out";
ifstream fin(input);
ofstream fout(output);
int main()
{
int n, t, k, x, left, right, middle, poz;
fin >> n;
vector<int>nums(n);
for (int i = 0; i < n; i++)
fin >> nums[i];
fin >> t;
for (int i = 1; i <= t; i++) {
fin >> k >> x;
left = 0;
right = n - 1;
poz = -1;
if (k == 0) {
while (left <= right) {
middle = left + (right - left) / 2;
if (nums[middle] == x) {
poz = middle;
break;
}
else {
if (nums[middle] < x)
left = middle + 1;
else
right = middle - 1;
}
}
}
else if (k == 1) {
while (left <= right) {
middle = left + (right - left) / 2;
if (nums[middle] <= x) {
left = middle + 1;
poz = middle;
}
else
right = middle - 1;
}
}
else {
while (left <= right) {
middle = left + (right - left) / 2;
if (nums[middle] >= x) {
right = middle - 1;
poz = middle;
}
else
left = middle + 1;
}
}
if (poz != -1)
fout << poz + 1 << '\n';
else
fout << poz << '\n';
}
return 0;
}