Cod sursa(job #580730)

Utilizator SadmannCornigeanu Calin Sadmann Data 13 aprilie 2011 13:51:30
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include<fstream>
#include<algorithm>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int n,m,i,tip,val,x;
int v[100001];

int main()
{
    in>>n;
    for(i=1;i<=n;i++)
        in>>v[i];
    in>>m;
    while(m--)
    {
        in>>tip>>val;
        if(!tip)
        {
            x = upper_bound(v + 1, v + n + 1, val)-(v+1);
            if (x <= n && x >= 1 && v[x] == val)
                out<<x<<'\n';
            else
                out<<"-1\n";
            continue;
        }
        if(tip==1)
        {
            x = upper_bound(v + 1, v + n + 1, val) - (v + 1);
            out<<x<<'\n';
            continue;
        }
        x = lower_bound(v + 1, v + n + 1, val) - v;
        out<<x<<'\n';
    }

    return 0;
}