Cod sursa(job #2545812)

Utilizator ana.pintiliciucAna Maria Pintiliciuc ana.pintiliciuc Data 13 februarie 2020 15:48:42
Problema Range minimum query Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.67 kb
#include <fstream>
#include <cmath>
#define nmax 100005

using namespace std;

ifstream f("rmq.in");
ofstream g("rmq.out");


int n;
int q, a[nmax];
int m[nmax][20];

void init()
{
    for(int i=0; i<n; i++)
        m[i][0]=a[i];
    for(int j=1; (1<<j)<=n; j++)
        for(int i=0; i+(1<<j)-1<n; i++)
            m[i][j]=min(m[i][j-1], m[i+(1<<(j-1))][j-1]);
}

int main()
{
    f>>n>>q;
    for(int i=0; i<n; i++)
        f>>a[i];
    init();
    for(int nr=1; nr<=q; nr++)
    {
        int i, j;
        f>>i>>j;
        i--;
        j--;
        int k=(log2(j-i+1));
        g<<min(m[i][k], m[j-(1<<k)+1][k])<<'\n';
    }

    return 0;
}