Cod sursa(job #1145143)

Utilizator dumytruKana Banana dumytru Data 17 martie 2014 21:51:38
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.29 kb
#include <iostream>
#include <stdio.h>
#include <vector>
#include <algorithm>

using namespace std;
unsigned n;
vector<unsigned> v;
vector<unsigned>::iterator it;


int main()
{
    freopen("cautbin.in","r",stdin);
    freopen("cautbin.out","w",stdout);
    unsigned i,nr,a,b,aux;
    scanf("%u",&n);
    for(i=1;i<=n;i++)
    {
        scanf("%u",&aux);
        v.push_back(aux);
    }

    scanf("%u",&nr);
    for(i=1;i<=nr;i++)
    {
        scanf("%u %u",&a,&b);
        if(a==0)
        {
            if(binary_search(v.begin(),v.end(),b))
            {
                it = upper_bound(v.begin(),v.end(),b);
                printf("%d\n", it- v.begin());
            }
            else
                printf("-1\n");
        }
        else if(a==1)
        {
                it = upper_bound(v.begin(),v.end(),b);
                printf("%d\n", it - v.begin());
        }
        else
        {
            if(binary_search(v.begin(),v.end(),b))
            {
                it = lower_bound(v.begin(),v.end(),b);
                printf("%d\n", it - v.begin());
            }
            else
            {
                it =  upper_bound(v.begin(),v.end(),b);
                printf("%d\n", it - v.begin());
            }
        }
    }
    return 0;
}