Cod sursa(job #2786561)

Utilizator mateitudordmDumitru Matei mateitudordm Data 21 octombrie 2021 10:17:59
Problema Cautare binara Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
#include <fstream>

using namespace std;

int v[100001];

int main()
{
    ifstream cin("cautbin.in");
    ofstream cout("cautbin.out");
    int n,m,i,pas=1,c,a,b,tot;
    cin>>n;
    for(i=0; i<n; i++)
        cin>>v[i];
    cin>>m;
    for(i=0; i<m; i++)
    {
        cin>>c>>a;
        pas=(1<<17);
        tot=0;
        if(c==0 || c==1)
        {
            for(; pas; pas>>=1)
                if((tot|pas)<n && v[tot|pas]<=a)
                {
                    tot|=pas;
                }
        }
        else
        {
            for(; pas; pas>>=1)
                if((tot|pas)<n && v[tot|pas]<a)
                {
                    tot|=pas;
                }
        }
        if(v[tot]==a && c==0)
            cout<<tot+1<<'\n';
        else if(c==0)
            cout<<-1<<'\n';
        else if(c==1)
            cout<<tot+1<<'\n';
        else
            cout<<tot+2<<'\n';
    }
    return 0;
}