Cod sursa(job #1932307)

Utilizator tifui.alexandruTifui Ioan Alexandru tifui.alexandru Data 19 martie 2017 17:32:46
Problema Range minimum query Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.59 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int a[40][100100];
inline void get_log(int n, int &nr, int &p)
{
    nr=0,p=1;
    while(p<=n)
    {
        p*=2;
        nr++;
    }
    nr--;
    p/=2;
}
int main()
{int n,i,j,k,m,A,q,x,y;
f>>n>>q;
for(i=1;i<=n;i++)
f>>a[0][i];
get_log(n,m,A);
int p=1;
for(i=1;i<=m;i++)
{
    p*=2;
    for(j=1;j<=n;j++)
    a[i][j]=min(a[i-1][j],a[i-1][j+p/2]);
}
for(i=1;i<=q;i++)
{
    f>>x>>y;
    get_log(y-x,k,A);
    g<<min(a[k][x],a[k][y-A+1])<<'\n';
}

    return 0;
}