Cod sursa(job #2087977)

Utilizator EdgeLordXDOvidiuPita EdgeLordXD Data 14 decembrie 2017 17:03:15
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int a[100001],n;
int caut(int x){
    int pas=1<<16,r=0;
    while(pas){
        if(r+pas<=n && a[r+pas]<=x)
            r+=pas;
        else
            pas/=2;
    }
    return r;
}
int main(){
    int q,t,i,nr;
    in>>n;
    for(i=1; i<=n; ++i)
        in>>a[i];
    in>>q;
    while(q--){
        in>>t>>i;
        nr=caut(i);
        if(!t){
            if(a[nr]==i)
                out<<nr;
            else
                out<<-1;
        }
        else if(t==1)
            out<<nr;
        else{
            while(a[nr]>=i)
                --nr;
            out<<nr+1;
        }
        out<<"\n";
    }
    return 0;
}