Cod sursa(job #3298628)

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

int main() {
    ifstream fin("cautbin.in");
    ofstream fout("cautbin.out");

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

    int m;
    fin >> m;
        int c, x;
    for (int i = 0; i < m; ++i) {
        fin >> 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)
                fout << -1 << '\n';
            else
                fout << 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;
                }
            }
            fout << 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;
                }
            }
            fout << pos + 1 << '\n';
        }
    }
    return 0;
}