Cod sursa(job #1936563)

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

using namespace std;

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

vector <int> numbers;
vector <int> :: iterator itPosition;

int totalNumbers, questions, position;

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;
        switch(operation){
            case 0:
                itPosition = upper_bound(numbers.begin(), numbers.end(), searchedNumber);
                position = itPosition - numbers.begin();
                cout << position << " " << searchedNumber << "\n";
                if ( itPosition >= numbers.begin() and itPosition <= numbers.end() and numbers[position-1] == searchedNumber )
                    fout << itPosition - numbers.begin()<< "\n";
                else
                    fout << -1 << "\n";
                break;
            case 1:
                itPosition = lower_bound(numbers.begin(), numbers.end(), searchedNumber+1);
                fout << itPosition - numbers.begin() << "\n";
                break;
            case 2:
                itPosition = upper_bound(numbers.begin(), numbers.end(), searchedNumber-1);
                fout << itPosition - numbers.begin() +1<< "\n";
                break;
        }
    }
}