Cod sursa(job #3140997)

Utilizator verde.cristian2005Verde Flaviu-Cristian verde.cristian2005 Data 11 iulie 2023 18:28:01
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.81 kb
#include <fstream>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int v[100001],n;
int cautbin(int val)
{
    int r=0,pas=1<<16;
    while(pas)
    {
        if(r+pas<=n&&v[r+pas]<=val)
            r+=pas;
        pas/=2;
    }
    return r;
}
int main()
{
    int i,t,a,x,q;
    in>>n;
    for(i=1; i<=n; i++)
        in>>v[i];
    in>>q;
    for(i=1; i<=q; i++)
    {
        in>>t>>a;
        if(t==0)
        {
            x=cautbin(a);
            if(v[x]==a)
                out<<x<<'\n';
            else
                out<<"-1\n";
        }
        else if(t==1)
        {
            x=cautbin(a);
            out<<x<<'\n';
        }
        else
        {
            x=cautbin(a-1);
            out<<x+1<<'\n';
        }
    }
    return 0;
}