Cod sursa(job #956711)

Utilizator alex_HarryBabalau Alexandru alex_Harry Data 3 iunie 2013 19:18:32
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.26 kb
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int m,n,a[100002];
void binary_search_0(int x)
{
    int mid,st=0,dr=n-1,sol=-1;
    while(st<=dr)
    {
        mid=(st+dr)/2;
        if(a[mid]>x)
            dr=mid-1;
        if(a[mid]<x)
            st=mid+1;
        if(a[mid]==x)
            sol=mid,st=mid+1;
    }
    g<<sol+1<<"\n";
}
void binary_search_1(int x)
{
    int mid,st=0,dr=n-1,sol=-1;
    while(st<=dr)
    {
        mid=(st+dr)/2;
        if(a[mid]>x)
            dr=mid-1;
        if(a[mid]<=x)
            st=mid+1,sol=mid;

    }
    g<<sol+1<<"\n";
}
void binary_search_2(int x)
{
    int mid,st=0,dr=n-1,sol=-1;
    while(st<=dr)
    {
        mid=(st+dr)/2;
        if(a[mid]>=x)
            dr=mid-1,sol=mid;
        if(a[mid]<x)
            st=mid+1;

    }
    g<<sol+1<<"\n";
}
void read()
{
    int i;
    f>>n;
    for(i=0;i<n;i++)
        f>>a[i];
    f>>m;
    for(i=0;i<m;i++)
    {
        int x,quest;
        f>>quest>>x;
        if(quest==0)
            binary_search_0(x);
        if(quest==1)
            binary_search_1(x);
        if(quest==2)
            binary_search_2(x);
    }
}

int main()
{
    read();
    return 0;
}