Cod sursa(job #1518296)

Utilizator Y0da1NUME JMECHER Y0da1 Data 5 noiembrie 2015 20:09:07
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.28 kb
#include<fstream>
#include<iostream>
using namespace std;
int n, m, v[100002], pos;
int cautbin0(int nr) ///1 3 3 3 5
{
    long long int mid;
    int b=1, e=n;
    while(b<e)
    {
    mid=(b+e)/2;
    //cout<<mid<<" "<<v[mid]<<endl;
        if(v[mid]<=nr)
            b=mid+1;
        else
            e=mid;
            //cout<<b<<" "<<e;
    }
    if(v[mid]==nr)
        return mid;
    return -1;

}
int cautbin1(int nr)
{
    long long int mid;
    int b=1, e=n;
    while(b<e)
    {
    mid=(b+e)/2;
        if(v[mid]<=nr)
            b=mid+1;
        else
            e=mid;
    }
    return mid;
}
int cautbin2(int nr)    ///1 3 3 3 5, 3
{
    long long int mid;
    int b=1, e=n;
    while(b<e)
    {
    mid=(b+e)/2;
        if(v[mid]>=nr)
            e=mid;
        else
            b=mid+1;
    }
    if (v[mid]<nr)
       ++ mid;
    return mid;
}
int main ()
{
    int c, nr, i;
    ifstream in ("cautbin.in");
    ofstream out ("cautbin.out");
    in>>n;
    for(i=1;i<=n;i++)
        in>>v[i];
    in>>m;
    for(i=0;i<m;i++)
    {
        in>>c>>nr;
        if(!c)
            out<<cautbin0(nr)<<"\n";
        else if(c==1)
            out<<cautbin1(nr)<<"\n";
        else
            out<<cautbin2(nr)<<"\n";
    }
}