Cod sursa(job #2514695)

Utilizator Rares31100Popa Rares Rares31100 Data 26 decembrie 2019 17:05:01
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <fstream>

using namespace std;

ifstream cin("cautbin.in");
ofstream cout("cautbin.out");

int n,m;
int sir[100001];

int findBin(int val)
{
    int poz=0;

    for(int p=n;p;p/=2)
        while(poz+p<=n && sir[poz+p]<=val)
            poz+=p;

    return poz;
}

int main()
{
    cin>>n;

    for(int i=1;i<=n;i++)
        cin>>sir[i];

    cin>>m;

    for(int q,i,k=1;k<=m;k++)
    {
        cin>>q>>i;
        int poz;

        switch(q)
        {
            case 0:
                poz=findBin(i);

                if(sir[poz]==i)
                    cout<<poz<<'\n';
                else
                    cout<<-1<<'\n';

                break;
            case 1:
                poz=findBin(i);

                cout<<poz<<'\n';

                break;
            case 2:
                poz=findBin(i-1)+1;

                cout<<poz<<'\n';

                break;
        }
    }

    return 0;
}