Cod sursa(job #2395140)

Utilizator refugiatBoni Daniel Stefan refugiat Data 2 aprilie 2019 11:44:44
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.63 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream si("cautbin.in");
ofstream so("cautbin.out");
int v[100005];
int main()
{
    int n;
    si>>n;
    for(int i=1; i<=n; ++i) {
        si>>v[i];
    }
    int q;
    si>>q;
    for(int i=1; i<=q; ++i) {
        int a, b;
        si>>a>>b;
        if(a==0) {
            int st=1;
            int dr=n;
            int mij;
            int rez=-1;
            while(st<=dr) {
                mij=(st+dr)/2;
                if(v[mij]==b) {
                    rez=mij;
                    st=mij+1;
                }
                else
                if(v[mij]<b) {
                    st=mij+1;
                }
                else {
                    dr=mij-1;
                }
            }
            so<<rez<<'\n';
        }
        if(a==1) {
            int st=1;
            int dr=n;
            int mij;
            int rez=-1;
            while(st<=dr) {
                mij=(st+dr)/2;
                if(v[mij]<=b) {
                    rez=mij;
                    st=mij+1;
                }
                else {
                    dr=mij-1;
                }
            }
            so<<rez<<'\n';
        }
        if(a==2) {
            int st=1;
            int dr=n, mij, rez=-1;
            while(st<=dr) {
                mij=(st+dr)/2;
                if(v[mij]<b) {
                    st=mij+1;
                }
                else {
                    rez=mij;
                    dr=mij-1;
                }
            }
            so<<rez<<'\n';
        }
    }
    return 0;
}