Cod sursa(job #2049888)

Utilizator IVVladIon Vlad Vasile IVVlad Data 27 octombrie 2017 19:21:42
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.18 kb
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int v[10000000],n,kx,nrintr,lo,hi,k1,y,k,x,mid;
int main()
{
    f>>n;

    for(int i=1; i<=n; i++) f>>v[i];
    f>>k;
    for(int i=1; i<=k; i++)
    {
        f>>nrintr>>x;
        k1=0;
        lo=1;
        hi=n;
        while(hi>lo)
        {
            mid=lo+(hi-lo)/2;
            if(v[mid]==x) break;
            if(v[mid]>x) hi=mid-1;
            if(v[mid]<x) lo=mid+1;
        }
        if(v[mid]==x) k1=1;
        if(nrintr==0)
        {
            if(k1==1){while(v[mid+1]==x) mid++;
                g<<mid<<'\n';}
                else g<<-1<<" ";
        }
        if(nrintr==1)
        {
            if(k1==1){while(v[mid+1]==x) mid++;
                g<<mid<<'\n';}
                else {y=lower_bound(v+1,v+n+1,x+1)-v-1;
                g<<y<<" ";}
        }
        if(nrintr==2)
        {
            if(k1==1){while(v[mid-1]==x) mid--;
                g<<mid<<'\n';}
                else {y=lower_bound(v+1,v+n+1,x+1)-v;
                    g<<y<<" ";
                }
        }


    }
    return 0;
}