Cod sursa(job #2795313)

Utilizator dariadragomir23Dragomir Daria dariadragomir23 Data 6 noiembrie 2021 11:07:05
Problema Cautare binara Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.11 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("cautbin.in");
ofstream fout ("cautbin.out");
const int MAXN = 100003;
int n, t, a[MAXN];
int main()
{
    fin >> n;
    for(int i = 1; i <= n; i++)
        fin >> a[i];
    fin >> t;
    int op, x, p = 1;
    while(p*2 <= n) p*=2;
    for(int k = 0; k < t; k++)
    {
        fin >> op >> x;
        switch(op)
        {
        case 0:
        {
            int i, l, ok = 0;
            for(i = 0, l = p; l > 0; l>>=1)
                if(i+l <= n && a[i+l] == x) i+=l;
            fout << (i ? i : -1);
            break;
        }
        case 1:
        {
            int i, l, ok = 0;
            for(i = 0, l = p; l > 0; l>>=1)
                if(i+l <= n && a[i+l] <= x) i+=l;
            fout << i;
            break;
        }
        case 2:
        {
            int i, l, ok = 0;
            x--;
            for(i = 0, l = p; l > 0; l>>=1)
                if(i+l <= n && a[i+l] <= x) i+=l;
            fout << i+1;
            break;
        }
        }
        fout << "\n";
    }
    return 0;
}