Cod sursa(job #2493198)

Utilizator Mc_TaviMacovei Octavian-Cosmin Mc_Tavi Data 16 noiembrie 2019 09:35:31
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.19 kb
#include <bits/stdc++.h>

using namespace std;

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

int n, m, cerinta, deCautat;
int v[100005];

int cautBin(int st, int dr, int x) {
    int mid = (st+dr)/2+1;
    if(st > dr) {
        if(cerinta == 0)
            return -1;
        return mid;
    }
    if(x > mid)
        return cautBin(mid, dr, x);
    if(x < mid)
        return cautBin(st, mid, x);
    return mid;
}

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

    fin >> m;
    for(int i = 0; i < m; ++i) {
        fin >> cerinta >> deCautat;
        int poz = cautBin(1, n, deCautat);
        if(cerinta == 0) {
            if(poz == -1) {
                fout << poz << '\n';
                continue;
            }
            while(v[poz+1] == deCautat)
                ++poz;
            fout << poz << '\n';
            continue;
        }
        if(cerinta == 2) {
            while(v[poz-1] == deCautat) {
                --poz;
            }
            fout << poz << '\n';
        }
        if(cerinta == 1) {
            while(v[poz+1] == deCautat) {
                ++poz;
            }
            fout << poz << '\n';
        }
    }
    return 0;
}