Cod sursa(job #738563)

Utilizator BitOneSAlexandru BitOne Data 20 aprilie 2012 21:02:17
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <fstream>
#include <cstdlib>
#include <iterator>
#include <algorithm>

using namespace std;

const int N_MAX=100011;

int v[N_MAX];
pair<int*, int*> pr;

int main()
{
    int N, M, i, op, x;
    ifstream in("cautbin.in");
    ofstream out("cautbin.out");

    in>>N;
    for(i=1; i <= N; ++i)
        in>>v[i];
    for(in>>M; M; --M)
    {
        in>>op>>x;
        pr=equal_range(v+1, v+N+1, x);
        if(0 == op)
        {
            if(pr.first-v == N+1 || x != *(pr.first))
                out<<"-1\n";
            else out<<(pr.second-v-1)<<'\n';
        }
        else if(1 == op)
               out<<(pr.second-v-1)<<'\n';
             else out<<(pr.first-v)<<'\n';
    }

    return EXIT_SUCCESS;
}