Cod sursa(job #1885820)

Utilizator robertro1Benedek Robert George robertro1 Data 20 februarie 2017 13:41:02
Problema Cautare binara Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <bits/stdc++.h>
using namespace std;

int caut_bin(const vector<int> & v, const int x){
    int i=0;
    for(int sure= (1<<19); sure>0; sure=sure/2)
    {
       if(sure+i < v.size() && v[i+sure] <= x)
            i=sure+i;
    }
    return i; }

int main()
{
    ifstream f("cautbin.in");
    ofstream g("cautbin.out");
    int n;
    f >> n;
    vector<int> v(n);
    for(int i = 0; i < n; ++i){
        f >> v[i]; }
    int m;
    f >> m;
    for(int i = 0, t, x; i < m; ++i){
        f >> t >> x;
        if(t == 1)
            g << caut_bin(v, x)+1 << '\n';
        else if(t == 2)
            g << caut_bin(v, x-1)+1 +1 << '\n';
        else{
            const int tmp = caut_bin(v, x);
            if(v[tmp] == x) g << tmp+1 << '\n';
            else g << -1 << '\n'; } }
    return 0; }