Cod sursa(job #1756424)

Utilizator 2dorTudor Ciurca 2dor Data 12 septembrie 2016 20:12:46
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.11 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 (idx != 0 && A[idx - 1] == x) {
                    fout << idx << '\n';
                } else {
                    fout << -1 << '\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;
}