Cod sursa(job #3319109)

Utilizator ilincatudor7Ilinca Tudor ilincatudor7 Data 30 octombrie 2025 16:54:41
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 kb
#include <fstream>

using namespace std;

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

int n, m, a[100001];

int cbp(int x)
{
    int sol = 0, exp = 0;
    while((1<<exp) <= n) exp++;
    for(int i = exp; i >= 0; i--)
    {
        int q = sol + (1 << i);
        if(q <= n && a[q] <= x) sol = q;
    }
    return sol;
}

int main()
{
    fin >> n;
    for(int i = 1; i <= n; i++)
        fin >> a[i];
    fin >> m;
    for(int k = 1; k <= m; k++)
    {
        int t, x, p;
        fin >> t >> x;
        if(t != 2) p = cbp(x);
        if(t == 1)
            fout << p << '\n';
        else if(t == 0)
            if(a[p] == x) fout << p << '\n';
            else fout << "-1\n";
        else
            fout << cbp(x-1) + 1 << '\n';
    }
    return 0;
}