Cod sursa(job #2532773)

Utilizator xXoctavianXxStanescu Matei Octavian xXoctavianXx Data 28 ianuarie 2020 12:31:15
Problema Range minimum query Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.7 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("rmq.in");
ofstream fout("rmq.out");

int rmq[200009][19];
int m,n,a,b;

void update()
{
    int lg=log2(n);
    for(int j=1; j<=lg; ++j)
    {
        int putere=(1<<(j-1));
        for(int i=1; i+putere<=n; i++)
        {
            rmq[i][j]=min(rmq[i][j-1],rmq[i+putere][j-1]);
        }
    }
}

void afis(int x, int y)
{
    int lg=log2(y-x+1);
    int put=1<<lg;
    fout<<min(rmq[x][lg],rmq[y-put+1][lg])<<"\n";
}

int main()
{
    fin>>n>>m;
    for(int i=1; i<=n; ++i)
    {
        fin>>rmq[i][0];
    }
    update();
    for(int i=0; i<m; i++)
    {
        fin>>a>>b;
        afis(a,b);
    }
}