Cod sursa(job #2273822)

Utilizator AlmaChan13Petria Mitran Alma Elena AlmaChan13 Data 31 octombrie 2018 23:23:10
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.74 kb
#include <fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int n,i,m,cerinta,x,st,dr,mij,a,v[100100];
int main () {
    fin>>n;
    for (i=1;i<=n;i++)
        fin>>v[i];
    fin>>m;
    for (i=1;i<=m;i++) {
        fin>>cerinta>>a;
        if (cerinta==0) {
            st=1;
            dr=n;
            while (st<dr) {
                mij=(st+dr)/2;
                if (v[mij]>a) {
                    dr=mij-1;
                }
                if (v[mij]<a) {
                    st=mij+1;
                }
                if (v[mij]==a) {
                    x=mij;
                    break;
                }
            }
            while (v[x]==a)
                x++;
            fout<<x-1<<"\n";
        }
        if (cerinta==1) {
            st=1;
            dr=n;
            while (st<dr) {
                mij=(st+dr)/2;
                if (v[mij]>a) {
                    dr=mij-1;
                }
                if (v[mij]<=a) {
                    x=mij;
                    break;
                }
            }
            while (v[x]<=a)
                x++;
            fout<<x-1<<"\n";

        }
        if (cerinta==2) {
            st=1;
            dr=n;
            mij=0;
            while (st<dr) {
                mij=(st+dr)/2;
                if (v[mij]>=a) {
                    x=mij;
                    break;
                }
                if (v[mij]<x) {
                    st=mij+1;
                }
            }
            if (x!=0) {
                while (v[x]>=a)
                    x--;
                fout<<x+1<<"\n";
            }
            else
                fout<<-1<<"\n";

        }
    }
}