Cod sursa(job #1324923)

Utilizator deea101Andreea deea101 Data 22 ianuarie 2015 22:20:20
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.22 kb
using namespace std;

#include <vector>
#include <fstream>
using namespace std;
 
ifstream f("cautbin.in");
ofstream g("cautbin.out");
 
vector <int> v;

int binarySearch(vector <int> &v, int x)
{
    int lo=0, hi=v.size();
    int mid;

    while(hi-lo>1)
    {
        mid=lo+(hi-lo)/2;
        
        if(v[mid]<=x)
            lo=mid;
        else hi=mid;
    }
    
    return lo;
}


int binarySearch2(vector <int> &v, int x)
{
    int lo=-1, hi=v.size()-1;
    int mid;

    while(hi-lo>1)
    {
        mid=lo+(hi-lo)/2;
        
        if(v[mid]<x)
            lo=mid;
        else hi=mid;
    }
    
    return hi;
}

int main()
{
    int N,x,y,q;
    f>>N;
    while(N--)
    {
        f>>x;
        v.push_back(x);
    }
    int T;
    f>>T;
    while(T--)
    {
        f>>q>>x;
        switch(q)
        {
            case 0:
                y=binarySearch(v,x);
                if(v[y]==x) g<<(y+1)<<'\n';
                else g<<-1<<'\n'; break;
            case 1:
                y=binarySearch(v,x);
                g<<(y+1)<<'\n'; break;
            case 2:
                y=binarySearch2(v,x);
                g<<(y+1)<<'\n'; break;
        }
    }
}