Cod sursa(job #2790440)

Utilizator mihnea03Ciocioiu Mihnea mihnea03 Data 28 octombrie 2021 23:26:51
Problema Range minimum query Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.62 kb
#include <fstream>
#define dim 100010
using namespace std;
int a[20][dim];
int log[dim];
int i,k,n,m,st,dr,len;

int main() {
    ifstream fin("rmq.in");
    ofstream fout("rmq.out");
    fin>>n>>m;
    for (i=1;i<=n;i++) {
        fin>>a[0][i];
    }
    for (i=2;i<=n;i++) {
        log[i]=log[i/2]+1;
    }
    for (k=1;k<=log[n];k++) {
        for (i=1;i<=n-(1<<k)+1;i++) {
            a[k][i]=min(a[k-1][i],a[k-1][i+(1<<k-1)]);
        }
    }
    for (;m--;) {
        fin>>st>>dr;
        len=dr-st+1;
        k=log[len];
        fout<<min(a[k][st],a[k][dr-(1<<k)+1])<<"\n";
    }
    return 0;
}