Pagini recente » Cod sursa (job #2647644) | Cod sursa (job #1906237) | Cod sursa (job #3197264) | Cod sursa (job #1613129) | Cod sursa (job #2205351)
#include <fstream>
#include <algorithm>
#include <iostream>
#include <cmath>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <vector>
#include <stack>
#include <cstring>
#include <queue>
#define MAX 100000
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int32_t myVector[MAX + 27], x, n, m;
void search0() {
int32_t left = 0, right = n - 1, mid = (right + left) / 2;
while (left <= right) {
mid = (left + right) / 2;
if (x >= myVector[mid]) {
left = mid + 1;
}
else
right = mid - 1;
}
if (myVector[mid - 1] == x) {
out << mid << '\n';
}
else
out << "-1" << '\n';
}
void search1() {
int32_t left = 0, right = n - 1, mid = 0;
while (left <= right) {
mid = (right + left) / 2;
if (x >= myVector[mid]) {
left = mid + 1;
}
else
right = mid - 1;
}
out << mid << '\n';
}
void search2() {
int32_t left = 0, right = n - 1, mid = 0;
while (left <= right) {
mid = (left + right) / 2;
if (x == myVector[mid])
break;
if (x > myVector[mid]) {
left = mid + 1;
}
else
right = mid - 1;
}
if (left > right)
out << mid - 1 << '\n';
else
out << mid << '\n';
}
int main()
{
int16_t c;
in >> n;
for (int32_t i = 0; i < n; i++)
in >> myVector[i];
in >> m;
for (int32_t i = 0; i < m; i++) {
in >> c >> x;
if (c == 0) {
search0();
}
if (c == 1) {
search1();
}
if (c == 2) {
search2();
}
}
return 0;
}