Cod sursa(job #1291913)

Utilizator Octavian2399Manolache Octavian Octavian2399 Data 13 decembrie 2014 15:00:23
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.71 kb
/*http://www.infoarena.ro/problema/cautbin*/
#include <iostream>
#include <fstream>
using namespace std;
int v[100010],n,z,x,m,st,dr,i;

int main()
{
    ifstream f("cautbin.in",ifstream::in);
    ofstream g("cautbin.out",ifstream::out);
    f>>n;
    for(i=1;i<=n;i++)
        f>>v[i];
    f>>m;
    for(i=0;i<m;i++)
        {
            f>>z>>x;
            if(z==0)
                {
                    st=1;
                    dr=n;
                    while(st<dr)
                        {
                            m=(st+dr)/2;
                            if(x>=v[m])
                                st=m+1;
                            else   dr=m;
                        }
                    st--;
                    if(v[st]==x) g<<st<<'\n';
                        else    g<<-1<<'\n';
                }
            if(z==1)
                {
                    st=1;
                    dr=n;
                    while(st<dr)
                        {
                            m=(st+dr)/2;
                            if(x>=v[m])
                                st=m+1;
                            else   dr=m;
                        }
                    st--;
                    g<<st<<'\n';
                }
            if(z==2)
                {
                    st=1;
                    dr=n;
                    while(st<dr)
                        {
                            m=(st+dr)/2;
                            if(x>=v[m])
                                dr=m-1;
                            else    st=m;
                        }
                    st++;
                    g<<st<<'\n';
                }
        }


    return 0;
}