Cod sursa(job #1567935)

Utilizator netfreeAndrei Muntean netfree Data 13 ianuarie 2016 20:24:20
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.43 kb
#include <iostream>
#include <fstream>
using namespace std;

long long x[100001];

int cautare_binara (long long x[], int nrDeCautat, int n){

    int st=1; int dr=n;  int mijloc=0; int exista=0;
    while(st<dr && exista!=1){
            mijloc=(dr+st)/2;
            if(nrDeCautat==x[mijloc]){
                return mijloc;
                exista=1;
            }

            if(nrDeCautat>x[mijloc])
                st=mijloc+1;
            if(nrDeCautat<x[mijloc])
                dr=mijloc-1;


    }


    if(exista!=1)
        return -1;
}

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

    int rezultat,t,q,i,type,mijloc,st,dr,exista=0,n,nrDeCautat,raspuns;

    fin>>n;
    for(i=1;i<=n;i++)
        fin>>x[i];


    fin>>t;
    for(q=1;q<=t;q++){
        fin>>type;
        if(type==0){
            fin>>nrDeCautat;
            rezultat=cautare_binara(x,nrDeCautat,n);

            if(rezultat==-1)
                cout<<-1;
            else{

                for(i=rezultat;i<=n;i++){
                    if(x[i]==x[rezultat])
                        rezultat++;
                        else break;
                }
                fout<<rezultat<<endl;
            }
        }
        if(type==1){
            fin>>nrDeCautat;

        }
        if(type==2){
            fin>>nrDeCautat;
        }




    }









    return 0;
}