Cod sursa(job #1955747)

Utilizator Tyler_BMNIon Robert Gabriel Tyler_BMN Data 6 aprilie 2017 10:38:56
Problema Range minimum query Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <fstream>

using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");

int n, m, vec[100005], STEP;

int main()
{
    int tip,x,i,step;

    fin>>n;
    for(i = 1; i <= n; i++)
        fin>>vec[i];
    for(STEP = 1; STEP <= n; STEP <<= 1);

    fin>>m;
    for(; m; m--)
    {
        fin>>tip>>x;
        if(tip < 2)
        {
            for(step = STEP, i = 0; step; step >>= 1)
                if(i + step <= n && vec[i + step] <= x)
                    i += step;
            if(!tip && vec[i] != x)
                fout<<"-1\n";
            else
                fout<<i<<"\n";
            continue;
        }
        for(step = STEP, i = n; step; step>>=1)
            if(i - step > 0 && vec[i - step] >= x)
                i -= step;
        fout<<i<<"\n";
    }
    return 0;
}