Cod sursa(job #2284641)

Utilizator isabellla128Haiura Andreea Isabela isabellla128 Data 17 noiembrie 2018 12:12:33
Problema Range minimum query Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.67 kb
#include <bits/stdc++.h>
#define  NMAX 100000
#define MMAX 1000000

using namespace std;

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

int n, m, RMQ[20][NMAX];

int main()
{
    int i, j, p2=1;
    f>>n>>m;
    for(i=1;i<=n;i++)
        f>>RMQ[0][i];
    for(i=1;p2<=m;i++)
    {
        for(j=1;j+p2<=n;j++)
            RMQ[i][j]=min(RMQ[i-1][j], RMQ[i-1][j+p2]);
        p2=p2*2;
    }
    int x, y, lung;
    for(i=1;i<=m;i++)
    {
        f>>x>>y;
        lung=y-x+1;
        p2=0;
        while(lung>1)
        {
            p2++;
            lung=(lung>>1);
        }
        g<<min(RMQ[p2][x],RMQ[p2][y-(1<<p2)+1])<<"\n";
    }
    return 0;
}