Cod sursa(job #2054671)

Utilizator LauraNaduLaura Nadu LauraNadu Data 2 noiembrie 2017 12:18:36
Problema Range minimum query Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.57 kb
#include<fstream>
#include<cmath>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int n, m, i, d[35][100005], sol[1000005], k, x, y, p[35];
int main()
{
    f>>n>>m;
    for(i=1;i<=n;i++)
        f>>d[0][i];
    for(k=1;(1<<k)<=n;k++)
    {
        for(i=1;i<=n;i++)
            d[k][i]=min(d[k-1][i],d[k-1][i+(1<<(k-1))]);
        p[k]=(1<<k);
    }
    for(i=1;i<=m;i++)
    {
        f>>x>>y;
        k=log2(y-x+1);
        sol[i]=min(d[k][x],d[k][y-p[k]+1]);
    }
    for(i=1;i<=m;i++)
        g<<sol[i]<<"\n";
    return 0;
}