Cod sursa(job #2280543)

Utilizator RedPipperNastasa Stefan-Alexandru RedPipper Data 10 noiembrie 2018 19:59:14
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.07 kb
#include <fstream>

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

int n,m, v[100001],q,nr,l,r,mid;

int main()
{
    fin>>n;
    for(int i=1;i<=n;i++)fin>>v[i];
    fin>>m;
    for(int i=1;i<=m;i++){
        fin>>q>>nr;
        l=1;r=n;
        switch(q){
        case 0:
            while(l<r-1){
                mid=(l+r)/2;
                if(v[mid]<=nr)l=mid;
                else if(v[mid]>nr)r=mid-1;
            }
            if(v[mid]==nr)fout<<mid<<endl;
            else fout<<"-1"<<endl;
            break;
        case 1:
            while(l<r-1){
                mid=(l+r)/2;
                if(v[mid]<=nr)l=mid;
                else if(v[mid]>q)r=mid-1;
            }
            if(v[mid]<=nr)fout<<mid<<endl;
            break;
            case 2:
            while(l<r-1){
                mid=(l+r)/2;
                if(v[mid]<nr)l=mid+1;
                else if(v[mid]>=q)r=mid;
            }
                if(v[mid]>=nr)fout<<mid<<endl;
            break;
        }



    }
    return 0;
}