Cod sursa(job #1168525)

Utilizator bciobanuBogdan Ciobanu bciobanu Data 8 aprilie 2014 20:25:00
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.37 kb
#include <fstream>
using namespace std;
static const int NMAX=100005;
int main()
{
    int n,m,v[NMAX],i,t,nr,l,dr,mid,sol;
    fstream f("cautbin.in",ios::in),g("cautbin.out",ios::out);
    f>>n;
    for(i=1; i<=n; ++i) f>>v[i];
    f>>m;
    for(i=1; i<=m; ++i)
    {
        f>>t>>nr;
        l=1;
        dr=n;
        sol=-1;
        if(!t)
        {
            while(l<=dr)
            {
                mid=l+(dr-l)/2;
                if(v[mid]<nr) l=mid+1;
                else if(v[mid]>nr) dr=mid-1;
                else
                {
                    sol=mid;
                    l=mid+1;
                }
            }
            g<<sol<<'\n';
        }
        else if(t==1)
        {
            while(l<=dr)
            {
                mid=l+(dr-l)/2;
                if(v[mid]<=nr)
                {
                    l=mid+1;
                    sol=mid;
                }
                else dr=mid-1;
            }
            g<<sol<<'\n';
        }
        else
        {
            while(l<=dr)
            {
                mid=l+(dr-l)/2;
                if(v[mid]<nr) l=mid+1;
                else
                {
                    sol=mid;
                    dr=mid-1;
                }
            }
            g<<sol<<'\n';
        }
    }
    f.close();
    g.close();
    return 0;
}