Cod sursa(job #2074967)

Utilizator CyborgSquirrelJardan Andrei CyborgSquirrel Data 25 noiembrie 2017 10:24:46
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.18 kb
#include <iostream>
#include <fstream>

using namespace std;

int valslen;
int vals[100041];

int binSearch(int n, int t)
{
    int pos = -1, mid;
    int lt = 1, rt = valslen;
    while(lt <= rt){
        mid = (lt + rt) / 2;
        if(vals[mid] <= n){
            if((vals[mid] == n && t == 0) || t == 1){
                pos = mid;
            }
            lt = mid + 1;
        }else{
            rt = mid - 1;
        }
    }
    return pos;
}

int binSearcho(int n)
{
    int pos = -1, mid;
    int lt = 1, rt = valslen;
    while(lt <= rt){
        mid = (lt + rt) / 2;
        if(vals[mid] >= n){
            pos = mid;
            rt = mid - 1;
        }else{
            lt = mid + 1;
        }
    }
    return pos;
}

int main()
{
    ifstream fin("cautbin.in");
    ofstream fout("cautbin.out");
    int m, t, v;
    fin >> valslen;
    for(int i = 1; i <= valslen; i++){
        fin >> vals[i];
    }
    fin >> m;
    for(int i = 1; i <= m; i++){
        fin >> t >> v;
        if(t == 2){
            fout << binSearcho(v);
        }else{
            fout << binSearch(v, t);
        }
        fout << "\n";
    }
    return 0;
}