Cod sursa(job #2755324)

Utilizator almar.fetaFeta Almar almar.feta Data 26 mai 2021 23:42:12
Problema Range minimum query Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.72 kb
#include <fstream>

using namespace std;

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

int n,m;
int RMQ[18][100001];

int main()
{
    in >> n >> m;
    for(int i=1; i<=n; i++)
        in >> RMQ[0][i];
    int p = 2;
    int i = 1;
    while(p <= n)
    {
        for(int j=1; j<=n; j++)
            RMQ[i][j] = min(RMQ[i-1][j], RMQ[i-1][j + p/2]);
        i++;
        p = p * 2;
    }
    int x,y,exp;
    for(int i=1; i<=m; i++)
    {
        in >> x >> y;
        p = 1;
        exp = 0;
        while(p*2 <= y-x+1)
        {
            p = p * 2;
            exp++;
        }
        out << min(RMQ[exp][x], RMQ[exp][y-p+1]) << "\n";
    }
    in.close();
    out.close();
    return 0;
}