Cod sursa(job #2023890)

Utilizator alex.surdubobAlex Surdu alex.surdubob Data 19 septembrie 2017 17:28:01
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");

int v[100003];
int main()
{
    int n, m;
    fin >> n;
    for(int i = 1 ; i <= n; i++)
    {
        fin >> v[i];
    }
    sort(v + 1, v + n + 1);
    fin >> m;
    for(int i = 0; i < m; i++)
    {
        int tip, nr, r;
        fin >> tip >> nr;
        switch(tip)
        {
        case 0:
            r = upper_bound(v + 1, v + n + 1, nr) - v - 1;
            if(r <= n && r >= 1 && v[r] == nr) fout << r << '\n';
            else fout << "-1";
            break;
        case 1:
            r = lower_bound(v + 1, v + n + 1, nr + 1) - v - 1;
            fout << r << '\n';
            break;

        case 2:
            r = upper_bound(v + 1, v + n + 1, nr - 1) - v;
            fout << r << '\n';
            break;
        }
    }

    return 0;
}