Cod sursa(job #1333389)

Utilizator rebound212Mihnea Savu rebound212 Data 3 februarie 2015 08:57:04
Problema Range minimum query Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.58 kb
#include <cstdio>
#include <algorithm>
using namespace std;
int d[18][100001],x,y,i,j,n,m,z;
int main()
{
    freopen("rmq.in","r",stdin);
    freopen("rmq.out","w",stdout);
     scanf("%d %d",&n,&m);
     for(i=1;i<=n;++i)
           scanf("%d",&d[0][i]);
     for(i=1;1<<i<=n;++i)
     {
       for(j=1;j<=n-(1<<(i-1));++j)
          d[i][j]=min(d[i-1][j],d[i-1][j+1<<(n-1)]);
     }

   for(i=1;i<=m;++i)
   {   scanf("%d %d",&x,&y);
       z=0;
       while((1<<z+1)<=x-y+1)
            z++;
        printf("%d\n",min(d[z][x],d[z][y-(1<<z)+1]));
   }
    return 0;
}