Cod sursa(job #1756418)

Utilizator 2dorTudor Ciurca 2dor Data 12 septembrie 2016 19:58:24
Problema Cautare binara Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 1.17 kb
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
    ifstream fin("cautbin.in");
    int elem_cnt;
    fin >> elem_cnt;
    vector<int> A(elem_cnt);
    for (int i = 0; i < elem_cnt; ++i) {
        fin >> A[i];
    }
    ofstream fout("cautbin.out");
    int queries_cnt, operation_type, x;
    fin >> queries_cnt;
    for (int i = 0; i < queries_cnt; ++i) {
        fin >> operation_type >> x;
        switch (operation_type) {
            case 0: {
                auto idx = upper_bound(A.begin(), A.end(), x)- A.begin();
                if (static_cast<size_t>(idx) == A.size()
                        || idx == 0 || A[idx - 1] != x) {
                    fout << -1 << '\n';
                } else {
                    fout << idx << '\n';
                }
                break;
            } case 1: {
                auto idx = upper_bound(A.begin(), A.end(), x) - A.begin();
                fout << idx << '\n';
                break;
            } case 2: {
                auto idx = lower_bound(A.begin(), A.end(), x) - A.begin();
                fout << idx + 1 << '\n';
                break;
            }
        }
    }
    return 0;
}