Cod sursa(job #1166311)

Utilizator andrei_diaconuAndrei Diaconu andrei_diaconu Data 3 aprilie 2014 14:14:31
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.33 kb
#include <fstream>
#define NMax 100001
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int n, v[NMax], i, st, dr, mij, nq, ty, x, sol;
int main()
{
    f>>n;
    for (i=1; i<=n; i++)
        f>>v[i];
    f>>nq;
    for (i=1; i<=nq; i++) {
        f>>ty>>x;
        if (ty==0) {
            st=1;
            dr=n;
            while (st<=dr) {
                mij=(st+dr)/2;
                if (v[mij]>x)
                    dr=mij-1;
                else {
                    sol=mij;
                    st=mij+1;
                }
            }
            if (v[sol]==x)
                g<<sol<<"\n";
            else
                g<<-1<<"\n";
        }
        if (ty==1) {
            st=1;
            dr=n;
            while (st<=dr) {
                mij=(st+dr)/2;
                if (v[mij]>x)
                    dr=mij-1;
                else {
                    sol=mij;
                    st=mij+1;
                }
            }
            g<<sol<<"\n";
        }

        if (ty==2) {
            st=1;
            dr=n;
            while (st<=dr) {
                mij=(st+dr)/2;
                if (v[mij]>=x) {
                    sol=mij;
                    dr=mij-1;
                }
                else
                    st=mij+1;
            }
            g<<sol<<"\n";
        }

    }
    return 0;
}