Cod sursa(job #2613888)

Utilizator florian_petrutCoaje Petrut florian_petrut Data 10 mai 2020 20:14:55
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.18 kb
#include <fstream>
using namespace std;

ifstream f("cautbin.in");
ofstream g("cautbin.out");
int a[100001], mij, n, i, x, opt, m, p, q;

void cautare(int x)
{
    p = 1;
    q = n;
    while(p <= q)
    {
    mij = (p + q) / 2;
    if(a[mij] == x)
        break;
    else if(a[mij] > x)
        q = mij - 1;
    else if(a[mij] < x)
        p = mij + 1;
    }
}
int main()
{
    f >> n;
    for(i = 1; i <= n; ++i)
        f >> a[i];
    f >> m;
    for(i = 1; i <= m; ++i)
    {
     f >> opt >> x;
    if(opt == 0){
        cautare(x);
        if(a[mij] == x){
            while(a[mij + 1] == x)
                mij++;
            g << mij << '\n';
        }
        else g << -1 << '\n';
    }

    if(opt == 1){
        cautare(x);
        if(a[mij] == x){
            while(a[mij + 1] == x)
                mij++;
        }
        else if(a[mij] > x)
            mij--;
        g << mij << '\n';
    }
    if(opt == 2){
        cautare(x);
        if(a[mij] == x){
            while(a[mij - 1] == a[mij])
                mij--;
        }
        else if(a[mij] < x)
            mij++;
        g << mij << '\n';
    }
}
    return 0;
}