Cod sursa(job #1430315)

Utilizator yukinaDascalescu Dana yukina Data 8 mai 2015 10:06:51
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.06 kb
#include<fstream>
using namespace std;
ifstream f("cautbin.in"); ofstream g("cautbin.out");
int v[100001];
int main()
{   int n,i,k,m;
    f>>n;
    for(i=1; i<=n; i++) f>>v[i];
    f>>k;
    while(k--)
    {   int t,x,st,dr;
        f>>t>>x;
        if(t==0)
        {   st=1; dr=n;
            while(st<=dr)
            {   m=(st+dr)/2;
                if(v[m]<=x) st=m+1; else dr=m-1;
            }
            m=(st+dr)/2;
            if(v[m]>x) m--;
            if(v[m]==x) g<<m<<"\n"; else g<<"-1\n";
        };
        if(t==1)
        {   st=1; dr=n;
            while(st<dr)
            {   m=(st+dr)/2;
                if(v[m]<=x) st=m+1; else dr=m;
            }
            m=(st+dr)/2;
            if(x<v[m]) m--;
            g<<m<<"\n";
        };
        if(t==2)
        {   st=1; dr=n;
            while(st<dr)
            {   m=(st+dr)/2;
                if(v[m]<x) st=m+1; else dr=m;
            }
            m=(st+dr)/2;
            if(v[m]<x) m++;
            g<<m<<"\n";
        };
    }
    g.close();
    return 0;
}