Cod sursa(job #1755055)

Utilizator alexsandulescuSandulescu Alexandru alexsandulescu Data 9 septembrie 2016 12:18:00
Problema Cautare binara Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <fstream>

using namespace std;

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

int N, x, step, i, a[1000], P, K;
int main()
{
    f >> N;
    for(i = 1; i <= N; i++) f >> a[i];
    f >> K;
    for(int ic = 1; ic <= K; ic++) {
        f >> P >> x;
        for(step = 1; step < N; step <<= 1);
        step >>= 1;
        for(i = 0; step; step >>= 1) {
            if(i + step <= N && a[i + step] <= x) i += step;
        }
        if(P == 1) g << i << "\n";
        if(P == 2) {
            while(a[i] == x) i--;
            i++;
            g << i << "\n";
        }
        if(P == 0) {
            while(a[i] == x) i++;
            i--;
            if(a[i] == x) g << i << "\n";
            else g << -1 << "\n";
        }
    }
    return 0;
}