Cod sursa(job #1953540)

Utilizator danielacapusanDaniela Capusan danielacapusan Data 4 aprilie 2017 21:21:05
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.12 kb
#include <iostream>
#include <fstream>
using namespace std;
int N,M,v[100];
ifstream f("cautbin.in");
ofstream o("cautbin.out");
int poz_max(int x)
{
    int hi,lo;
    int mid;
    hi=N;
    lo=-1;
    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;
    lo=-1;
    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=0;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(poz!=-1)
                poz++;
            o<<poz<<'\n';
        }
        if(r==1){
                int poz=poz_max(val);
                poz++;
            o<<poz<<'\n';

        }
        if(r==2){
            int poz=poz_min(val);
                poz++;
            o<<poz<<'\n';
        }


    }
    return 0;
}