Cod sursa(job #1118104)

Utilizator andreiblaj17Andrei Blaj andreiblaj17 Data 23 februarie 2014 23:54:56
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include <iostream>
#include <fstream>
#define nmax 100001
using namespace std;

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

int hi,lo,mid;
int n,v[nmax];

void bin01(int b, bool y){
    hi=n+1;
    lo=0;
    
    while (hi-lo>1){
        mid=lo+(hi-lo)/2;
        if (b>=v[mid]) lo=mid;
        else hi=mid;
    }
    
    if (!y){
        if (v[lo]==b) out << lo << "\n";
        else out << -1 << "\n";
    } else
        out << lo << "\n";
    
}

void bin2(int b){
    hi=n+1;
    lo=0;
    
    while (hi-lo>1){
        mid=lo+(hi-lo)/2;
        if (b<=v[mid]) hi=mid;
        else lo=mid;
    }
    
    out << hi << "\n";
    
}

int main(){
    
    int i,a,x,t;
    
    in >> n;
    for (i=1; i<=n; i++)
        in >> v[i];
    v[n+1]=v[i]+1;
    
    in >> t;
    for (i=1; i<=t; i++){
        in >> a >> x;
        
        if (a<2)
            bin01(x, a);
        else
            bin2(x);
        
    }
    return 0;
}