Cod sursa(job #612987)

Utilizator Lokycatalin petre Loky Data 14 septembrie 2011 09:58:21
Problema Cautare binara Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.27 kb
#include <fstream>

using namespace std;

int i,v[100000],m,x,y;
long int n,st,dr,mij;

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

    }
    f.close();
    g.close();
    return 0;
}