Cod sursa(job #2231490)

Utilizator mihaimusat.1998Musat Mihai-Robert mihaimusat.1998 Data 14 august 2018 17:06:47
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.11 kb
#include <fstream>

#define nmax 100000

using namespace std;

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

    int n,m,i,v[nmax+1],tip,val,pas,k;
    fin>>n;
    for(i=1;i<=n;i++) {
        fin>>v[i];
    }
    fin>>m;
    for(i=1;i<=m;i++) {
        fin>>tip>>val;
        pas=1;
        while(pas<=n) pas<<=1;
        pas>>=1;
        k=0;

        switch(tip) {
        case 0:
            while(pas) {
                if(k+pas<n && v[k+pas]<=val) k+=pas;
                pas>>=1;
            }
            if(v[k]==val) fout<<(k+1)<<endl;
            else fout<<"-1"<<endl;
            break;
        case 1:
            while(pas) {
                if(k+pas<n && v[k+pas]<=val) k+=pas;
                pas>>=1;
            }
            fout<<(k+1)<<endl;
            break;
        case 2:
            while(pas) {
                if(k+pas<n && v[k+pas]<val) k+=pas;
                pas>>=1;
            }
            if(k==0 && v[0]>=val) fout<<"1"<<endl;
            else fout<<(k+2)<<endl;
            break;
        }
    }

    return 0;
}