Cod sursa(job #1954925)

Utilizator danielacapusanDaniela Capusan danielacapusan Data 5 aprilie 2017 18:54:02
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.08 kb
#include <iostream>
#include <fstream>
using namespace std;
int N,M,v[100000];
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int poz_max(int x)
{
    int hi,lo;
    int mid;
    hi=N+1;
    lo=0;
    while(hi-lo>1)
    {
        mid=(lo+hi)/2;
        if(v[mid]<=x)
            lo=mid;
        else hi=mid;
    }
    return lo;
}
int poz_min(int x)
{
    int hi,lo;
    int mid;
    hi=N+1;
    lo=0;
    while(hi-lo>1)
    {
        mid=(lo+hi)/2;
        if(v[mid]>=x)
            hi=mid;
        else lo=mid;
    }
    return hi;
}
int main()
{
    int r,val;
    f>>N;
    for(int i=1;i<=N;i++){
        f>>v[i];
    }
    f>>M;
    for(int i=0;i<M;i++)
    {
        f>>r;
        f>>val;
        if(r==0){
            int poz=poz_max(val);
            if(val>v[poz])
                poz=-1;
            g<<poz<<'\n';
        }
        if(r==1){
                int poz=poz_max(val);
            g<<poz<<'\n';

        }
        if(r==2){
            int poz=poz_min(val);
            g<<poz<<'\n';
        }
    }
    return 0;
}