Cod sursa(job #1936537)

Utilizator AkrielAkriel Akriel Data 23 martie 2017 10:36:37
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.28 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin ("cautbin.in");
ofstream fout ("cautbin.out");

vector <int> numbers;

int totalNumbers, questions;

int main(){
    fin >>totalNumbers;
    for ( int number, index = 1; index <= totalNumbers; index++ ){
        fin >> number;
        numbers.push_back(number);
    }

    fin >> questions;
    for ( int operation, searchedNumber; questions; questions-- ){
        fin >> operation >> searchedNumber;
        vector <int> :: iterator position;
        switch(operation){
            case 0:
                position = upper_bound(numbers.begin(), numbers.end(), searchedNumber);
                if ( position >= numbers.begin() and position < numbers.end() )
                    fout << position - numbers.begin() << "\n";
                else
                    fout << -1 << "\n";
                break;
            case 1:
                position = lower_bound(numbers.begin(), numbers.end(), searchedNumber+1);
                fout << position - numbers.begin() << "\n";
                break;
            case 2:
                position = upper_bound(numbers.begin(), numbers.end(), searchedNumber-1);
                fout << position - numbers.begin() << "\n";
                break;
        }
    }
}