Cod sursa(job #3298629)

Utilizator Daniel15022012Daniel Munteanu Daniel15022012 Data 31 mai 2025 19:03:38
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.79 kb
#include <fstream>
#include <algorithm>
using namespace std;
int v[100005];

int main() {
    ifstream cin("cautbin.in");
    ofstream cout("cautbin.out");

    int n;
    cin >> n;
    for (int i = 0; i < n; ++i) {
        cin >> v[i];
    }

    int m;
    cin >> m;
        int c, x, pos;
    for (int i = 0; i < m; ++i) {
        cin >> c >> x;
        if (c == 0) {
            int left = 0, right = n - 1;
            pos = -1;
            while (left <= right) {
                int mid = (left + right) / 2;
                if (v[mid] == x) {
                    pos = mid;
                    left = mid + 1;
                } else if (v[mid] < x) {
                    left = mid + 1;
                } else {
                    right = mid - 1;
                }
            }
            if (pos == -1)
                cout << -1 << '\n';
            else
                cout << pos + 1 << '\n';
        }
        else if (c == 1) {
            int left = 0, right = n - 1;
            pos = -1;
            while (left <= right) {
                int mid = (left + right) / 2;
                if (v[mid] <= x) {
                    pos = mid;
                    left = mid + 1;
                } else {
                    right = mid - 1;
                }
            }
            cout << pos + 1 << '\n';
        }
        else if (c == 2) {
            int left = 0, right = n - 1;
        pos = -1;
            while (left <= right) {
                int mid = (left + right) / 2;
                if (v[mid] >= x) {
                    pos = mid;
                    right = mid - 1;
                } else {
                    left = mid + 1;
                }
            }
            cout << pos + 1 << '\n';
        }
    }
    return 0;
}