Cod sursa(job #455896)

Utilizator PavelRazvanPavel Razvan PavelRazvan Data 14 mai 2010 15:04:30
Problema Range minimum query Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include<algorithm>
using namespace std;
#define DIM 100005

int n,m,a[30][DIM];

inline int cmm (int x)
{
    int i;
    for(i=0;(1<<i)<=x;++i);
    return i-1;
}
int main ()
{
    freopen("rmq.in","r",stdin);
    freopen("rmq.out","w",stdout);
    int i,n2,j,x,y;
    scanf("%d%d",&n,&m);
    for(i=1;i<=n;++i)
        scanf("%d",&a[0][i]);
    n2=1<<cmm(n);
    n=1<<cmm(n);
    for(i=1;i<=n2;++i,n/2)
        for(j=1;j<=n;++j)
            a[i][j]=min(a[i-1][j],a[i-1][j+i]);
    for(i=1;i<=m;++i)
    {
        scanf("%d %d",&x,&y);
        n2=cmm(y-x+1);
        printf("%d\n",min(a[n2][x],a[n2][y-n2]));
    }

    return 0;
}