Cod sursa(job #1512596)

Utilizator RobertGCARezeanu Robert Gabriel Cristian Alexandru RobertGCA Data 28 octombrie 2015 12:31:46
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int n, i, v[100001], ii, m, c, x, st, dr, mid;
int main () {
    fin>>n;
    for(i=1;i<=n;i++)
        fin>>v[i];


    fin>>m;
    for(ii=1;ii<=m;ii++) {
        fin>>c>>x;

        st=1;
        dr=n;
        while(st<=dr) {
            mid=(st + dr) / 2;

            if(v[mid]<=x)
                st = mid + 1;
            else
                dr = mid - 1;
        }

        if(c==0 && v[dr]==x)
            fout<<dr;
        else
            if(v[dr]!=x)
                fout<<-1;

        if(c==1 && v[dr]==x && dr>1)
            fout<<dr;

        if(c==2) {
            st=1;
            dr=n;

            while(st<=dr){
                mid = ( st + dr ) / 2;

                if(v[mid]<x)
                    st=mid+1;
                else
                    dr=mid-1;
            }

            fout<<st;
        }

        fout<<"\n";
    }
    return 0;