Pagini recente » Cod sursa (job #2844810) | Cod sursa (job #2637891) | Cod sursa (job #3214792) | Cod sursa (job #1111478) | Cod sursa (job #2936144)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int main() {
const int MAX_LENGTH = 100000;
int n, a[MAX_LENGTH + 1], v[MAX_LENGTH + 1];
fin >> n;
for (int i = 1; i <= n; ++i) {
fin >> a[i];
}
int m;
fin >> m;
int i = 1;
while (m > 0) {
int nr, x;
fin >> nr >> x;
if (nr == 0) {
int left = 1, right = n, mid;
while (left < right) {
mid = left + (right - left) / 2;
//cout << mid << " ";
if (a[mid] <= x && a[mid + 1] <= x && mid + 1 <= n) {
left = mid + 1;
} else {
right = mid;
}
}
if (nr == 0) {
if (a[right] == x) {
fout << right << "\n";
/*
v[i] = right;
++i;
*/
} else {
fout << -1 << "\n";
/*
v[i] = -1;
++i;
*/
}
}
} else if (nr == 2) {
int left = 1, right = n, mid;
while (left < right) {
mid = (left + right) / 2;
if (a[mid] >= x) {
right = mid;
} else {
left = mid + 1;
}
}
if (a[left] >= x) {
fout << left << "\n";
/*
v[i] = left;
++i;
*/
}
} else if (nr == 1) {
int left = 1, right = n, mid;
while (left < right) {
mid = left + (right - left) / 2;
if (a[mid] <= x && mid + 1 <= n && a[mid + 1] <= x) {
left = mid + 1;
} else {
right = mid;
}
}
if (a[right] <= x) {
fout << right << "\n";
/*
v[i] = right;
++i;
*/
}
}
--m;
}
/*
cout << "->\n";
for (int j = 1; j < i; ++j) {
cout << v[j] << "\n";
}*/
return 0;
}