Cod sursa(job #1240233)

Utilizator gabrieligabrieli gabrieli Data 10 octombrie 2014 19:14:56
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 kb
#include <iterator>
#include <fstream>
#include <algorithm>
using namespace std;
 
int main () {
    ifstream fin("cautbin.in");
    ofstream fout("cautbin.out");

    int n;
    fin >> n;

    vector<int> v;
    copy_n( istream_iterator<int>(fin),
            n,
            back_inserter(v));

    int q, op, val;
    for (fin >> q; q; --q) {
        fin >> op >> val;

        switch (op) {
            case 0: {
                auto it = upper_bound(v.begin(), v.end(), val);
                if (*--it == val)
                    fout << it - v.begin() + 1 << '\n';
                else
                    fout << "-1\n";
                }
                break;
            case 1: {
                auto it = upper_bound(v.begin(), v.end(), val);
                fout << it - v.begin() << '\n';
                }
                break;
            case 2: {
                auto it = lower_bound(v.begin(), v.end(), val);
                fout << it - v.begin() + 1 << '\n';
                }
                break;
        }
    }
    
    return 0;
}