Cod sursa(job #2336266)

Utilizator CristianSoareSoare Cristian Costantin CristianSoare Data 4 februarie 2019 22:30:18
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda smenuri Marime 1.19 kb
#include <fstream>
#include <algorithm>
#define DIM 100000
using namespace std;

ofstream fout("cautbin.out");

char buff [DIM];
int p = DIM-1;

void inc(){
    p++;
    if (p == DIM){
        fread (buff, 1, DIM, stdin);
        p=0;
    }
}

void read(int &x){
    while (buff[p] < '0' || buff[p] > '9')
        inc();
    x = 0;
    while (buff [p] >= '0' && buff[p] <= '9'){
        x = 10*x + buff[p] - '0';
        inc();
    }
}

int n, v[100000], i, m, t, k;

int cb0 (int x){
    int i;
    for (i = n;i >= 1;i--)
        if (v[i] == x)
            return i+1;
    return -1;
}

int cb1 (int x){
    int i;
    for (i = n;i >= 1 && v[i] > x;i--);
            return i-1;
}

int cb2 (int x){
    int i;
    for (i = 1;i <= n && v[i] < x;i++);
        return i+1;
}

int main(){
    freopen ("cautbin.in", "r", stdin);
    read(n);
    for (i = 0;i < n;i++){
        read(v[i]);
    }
    read(m);
    while (m){
        m--;
        read (t);
        read (k);
        if (t == 0)
            fout << cb0(k) << '\n';
        else if (t == 1)
            fout << cb1(k) << '\n';
        else fout << cb2(k) << '\n';
    }
    return 0;
}