Cod sursa(job #2565454)

Utilizator mihnea03Ciocioiu Mihnea mihnea03 Data 2 martie 2020 14:15:22
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.28 kb
#include <fstream>
#define dim 100010
using namespace std;
int a[dim];
int i,n,m,q,x;
int st,dr,mid;

int main() {
    ifstream fin("cautbin.in");
    ofstream fout("cautbin.out");
    fin>>n;
    for (i=1;i<=n;i++) {
        fin>>a[i];
    }
    fin>>m;
    while (m--) {
        fin>>q>>x;
        st=1;
        dr=n;
        if (q==0) {///ultimul element egal cu x sau -1 daca nu exista x
            while (st<=dr) {
                mid=(st+dr)/2;
                if (a[mid]<=x) st=mid+1;
                else dr=mid-1;
            }
            ///rezultatul se afla in dr
            if (a[dr]==x) fout<<dr<<"\n";
            else fout<<-1<<"\n";
        }
        else if (q==1) {///ultimul element mai mic sau egal cu x
            while (st<=dr) {
                mid=(st+dr)/2;
                if (a[mid]<=x) st=mid+1;
                else dr=mid-1;
            }
            ///rezultatul se afla in dr
            fout<<dr<<"\n";
        }
        else if (q==2) {///primul element mai mare sau egal cu x
            while (st<=dr) {
                mid=(st+dr)/2;
                if (a[mid]>=x) dr=mid-1;
                else st=mid+1;
            }
            ///rezultatul se afla in st
            fout<<st<<"\n";
        }
    }
    return 0;
}