Cod sursa(job #2059673)

Utilizator SchnitzelMannPavaloiu Gabriel SchnitzelMann Data 7 noiembrie 2017 13:21:48
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int arr[100001],n;
int cautare(int x)
{
    int pas=1<<16,r=0;
    while(pas)
    {
        if(r+pas<=n&&arr[r+pas]<=x)
            r+=pas;
        pas/=2;
    }
    return r;
}
int main()
{
    int m,i,tip,XD;
    in>>n;
    for(i=1;i<=n;i++)
        in>>arr[i];
    in>>m;
    while(m--)
    {
        in>>tip>>i;
        XD=cautare(i);
        if(tip==0)
        {
            if(arr[XD]==i)
                out<<XD<<"\n";
            else
                out<<-1<<"\n";
        }
        else if(tip==1)
            out<<XD<<"\n";
        else
        {
            while(arr[XD]==i)
                XD--;
            out<<XD+1<<"\n";
        }
    }
    return 0;
}