Cod sursa(job #2185278)

Utilizator rnqftwcalina florin daniel rnqftw Data 24 martie 2018 14:20:39
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include <bits/stdc++.h>

using namespace std;

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

int main(){
    int n;
    int x;
    int i;
    int m;
    int tip;
    vector<int> v;
    vector<int>::iterator low,upp;
    in>>n;

    for( i=0;i< n ; i++){
        in>>x;
        v.push_back(x);
    }
    sort(v.begin(),v.end());
    in>>m;
    for(int i=0;i< m;i++)
    {
        in>>tip>>x;
        switch(tip){
            case 0:upp=upper_bound(v.begin(),v.end(),x);
                    if(v[upp-v.begin()-1]==x)
                        out<<upp-v.begin()<<'\n';
                    else
                        out<<-1<<'\n';
                    break;
            case 1:upp=upper_bound(v.begin(),v.end(),x);
                   out<<upp-v.begin()<<'\n';
                   break;
            case 2:low=lower_bound(v.begin(),v.end(),x);
                   out<<low-v.begin()+1 <<'\n';
                   break;
        }
    }
}