Cod sursa(job #2532772)

Utilizator xXoctavianXxStanescu Matei Octavian xXoctavianXx Data 28 ianuarie 2020 12:29:28
Problema Range minimum query Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.75 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)
    {
        for(int i=1; i+(1<<(j-1))<=n; i++)
        {
            rmq[i][j]=min(rmq[i][j-1],rmq[i+(1<<(j-1))][j-1]);
            cout<<rmq[i][j]<<" ";
        }
        cout<<"\n";
    }
}

void afis(int x, int y)
{
    int lg=log2(y-x+1);
    int put=1<<lg;
    cout<<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);
    }
}