Cod sursa(job #1323319)

Utilizator deea101Andreea deea101 Data 20 ianuarie 2015 22:18:20
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.13 kb
#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(),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,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;
        }
    }
}