Cod sursa(job #3319113)

Utilizator informatica1210Alexia Petre informatica1210 Data 30 octombrie 2025 17:01:36
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.42 kb
#include "bits/stdc++.h"
using namespace std;
ifstream f ("cautbin.in");
ofstream g ("cautbin.out");
int check0 (int i,int x)
{
    if (i<=x) return 1;
    return 0;
}
int check1 (int i,int x)
{
    if (i<=x) return 1;
    return 0;
}
int check2 (int i,int x)
{
    if (i<x) return 1;
    return 0;
}
int v[100002];
int main ()
{
    int n,x,q,c,val,sol,exp,try1,bit,n1;
    f>>n;
    for (x=1;x<=n;x++)
    {
        f>>v[x];
    }
    f>>q;
    exp=0;n1=n;
    while (n1>0) {exp++;n1/=2;}
    for (x=1;x<=q;x++)
    {
        f>>c>>val;
        if (c==0)
        {
            sol=0;
            for (bit=exp;bit>=0;bit--)
            {
                try1=sol+(1<<bit);
                if (try1<=n && check0(v[try1],val)) sol=try1;
            }
            if (sol!=0) g<<sol<<'\n';
            else g<<-1<<'\n';
        }
        else if (c==1)
        {
            sol=0;
            for (bit=exp;bit>=0;bit--)
            {
                try1=sol+(1<<bit);
                if (try1<=n && check1(v[try1],val)) sol=try1;
            }
            g<<sol<<'\n';
        }
        else if (c==2)
        {
            sol=0;
            for (bit=exp;bit>=0;bit--)
            {
                try1=sol+(1<<bit);
                if (try1<=n && check2(v[try1],val)) sol=try1;
            }
            g<<sol+1<<'\n';
        }
    }
    f.close ();
    g.close ();
    return 0;
}