Cod sursa(job #3265293)

Utilizator PredaBogdanPreda Bogdan PredaBogdan Data 28 decembrie 2024 19:14:38
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.89 kb
#include <bits/stdc++.h>

using namespace std;

ifstream f("cautbin.in");
ofstream g("cautbin.out");

int main(){
    int a[100001], n = 0, m = 0, caz = 0, x = 0, st = 0, dr = 0, mid = 0;
    f >> n;
    for (int i = 1; i <= n; i++) f >> a[i];

    f >> m;

    for (int i = 0; i < m; i++){
        f >> caz >> x;

        if (caz == 0){
            st = 1;
            dr = n;
            mid = 0;
            while (st <= dr) {
                mid = (st + dr) / 2;
                if (a[mid] == x){
                    while (a[mid] == x) mid++;
                    break;
                }
                else
                    if (a[mid] < x)
                        st = mid + 1;
                    else
                        dr = mid - 1;
            }
            if(st <= dr) g << mid - 1 << '\n';
            else g << -1 << '\n';
        }
        else if (caz == 1){
            st = 1;
            dr = n;
            mid = 0;
            while (st <= dr) {
                mid = (st + dr) / 2;
                if (a[mid] == x){
                    while (a[mid] == x) mid++;
                    break;
                }
                else
                    if (a[mid] < x)
                        st = mid + 1;
                    else
                        dr = mid - 1;
            }
            g << mid - 1 << '\n';
        }

        else if (caz == 2){
            st = 1;
            dr = n;
            mid = 0;
            while (st <= dr) {
                mid = (st + dr) / 2;
                if (a[mid] == x){
                    while (a[mid] == x) mid--;
                    break;
                }
                else
                    if (a[mid] < x)
                        st = mid + 1;
                    else
                        dr = mid - 1;
            }
            g << mid + 1 << '\n';
        }
    }
}