Cod sursa(job #1136014)

Utilizator gabrielinelusGabriel-Robert Inelus gabrielinelus Data 8 martie 2014 18:03:38
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.98 kb
#include <cstdio>
#include <vector>
#include <algorithm>

using namespace std;
int N;
vector<int> v;

void read()
{
    int x;
    scanf("%d",&N);
    for(int i = 1; i <= N; ++i){
        scanf("%d",&x);
        v.push_back(x);
    }
    scanf("%d",&N);
}


int main()
{
    freopen("cautbin.in","r",stdin);
    freopen("cautbin.out","w",stdout);

    read();
    int val,tip,pz;
    for(int i = 1; i <= N; ++i)
    {
        scanf("%d%d",&tip,&val);
        if(tip == 0)
        {
            pz = upper_bound(v.begin(),v.end(),val) - v.begin();
            if(v[pz-1] != val) printf("-1\n");
            else printf("%d\n",pz);
        }
        else if(tip == 1)
        {
            pz = lower_bound(v.begin(),v.end(),val+1) - v.begin();
            printf("%d\n",pz);
        }
        else if(tip == 2)
        {
            pz = upper_bound(v.begin(),v.end(),val-1) - v.begin() + 1;
            printf("%d\n",pz);
        }
    }

    return 0;
}