Cod sursa(job #966832)

Utilizator addy01adrian dumitrache addy01 Data 26 iunie 2013 17:04:25
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.47 kb
#include <fstream>
using namespace std;
int v[100010],maxim=-1,minim;


int main()
{
    ifstream in("cautbin.in");
    ofstream out("cautbin.out");

    int i,n,m,st,dr;
    in>>n;
    for(i=1;i<=n;i++)
        in>>v[i];
        in>>m;
    while(m--)
    {
        int x,querry;
        in>>querry>>x;
        st=1;
        dr=n;
        if(querry==0)
            {
        maxim=-1;
        while(st<=dr)
        {
        int mid=(st+dr)/2;
        if(v[mid]==x)
           {

                maxim=mid;
                st=mid+1;

            }
            else
                if(x<v[mid])
                   dr=mid-1;
                else
                    st=mid+1;
        }
                out<<maxim<<"\n";

            }



        else
            if(querry==1)
        {
            maxim=-1;
        while(st<=dr)
        {
        int mid=(st+dr)/2;
        if(v[mid]<=x)
            {

                    maxim=mid;
                    st=mid+1;
            }
            else
                dr=mid-1;

        }
            out<<maxim<<"\n";

        }

        else

        {
            minim=0;
        while(st<=dr)
        {
        int mid=(st+dr)/2;
        if(v[mid]>=x)
            {
                minim=mid;
                dr=mid-1;
            }

                else
                    st=mid+1;
        }
            out<<minim<<"\n";
        }


    }


    return 0;
}