Cod sursa(job #3212898)

Utilizator degoCozma Diego dego Data 12 martie 2024 11:47:50
Problema Range minimum query Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.67 kb
#include <bits/stdc++.h>

using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int r[17][100010],p2[100010],x,y,l,q,n;
int main()
{
    f>>n>>q;
    for(int i=1; i<=n; i++)
        f>>r[0][i];
    for(int i=2; i<=n; i++)
        p2[i]=1+p2[i/2];
    for(int p=1; (1<<p)<=n; p++)
        for(int i=1; i<=n; i++)
        {
            r[p][i]=r[p-1][i];
            int j=i+(1<<(p-1));
            if(j<=n && r[p][i]>r[p-1][j])
                r[p][i]=r[p-1][j];
        }

    for(int i=1; i<=q; i++)
    {
        f>>x>>y;
        int e=p2[x-y+1];
        l=(1<<p2[x-y+1]);
        g<<min(r[e][x],r[e][y-l+1])<<'\n';
    }
    return 0;
}