Cod sursa(job #2543730)

Utilizator mihnea.anghelMihnea Anghel mihnea.anghel Data 11 februarie 2020 14:32:31
Problema Range minimum query Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.6 kb
#include <fstream>
#define DIM 100010

using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int v[DIM], d[20][DIM], p2[DIM];
int n, m, i, j, st, dr;


int main()
{
    for ( i = 2; i <= DIM; i++ )
        p2[i] = 1+p2[i/2];

    f>>n>>m;
    for( i = 1; i <= n; i++ )
        f>>d[0][i];

    for ( i = 1; (1<<i) <= n; i++ )
        for ( j = 1; j <= n; j++ )
            d[i][j] = min ( d[i-1][j], d[i-1][ min(n, j+(1<<(i-1)) ) ] );

    for ( ; m--; ){
        f>>st>>dr;
        i = p2[dr-st+1];
        g<<min ( d[i][st], d[i][dr-(1<<i)+1] )<<"\n";
    }
    return 0;
}