Pagini recente » Cod sursa (job #2975930) | Cod sursa (job #466521) | Cod sursa (job #1438205) | Cod sursa (job #1206555) | Cod sursa (job #1973034)
#include <cstdio>
#include <iostream>
#define DIM 100001
using namespace std;
int log[DIM],d[17][DIM];
int main()
{
FILE *fin=fopen ("rmq.in","r");
FILE *fout=fopen ("rmq.out","w");
int n,q,i,x,y,l,sol,j;
fscanf (fin,"%d%d",&n,&q);
log[1]=0;
for (i=2;i<=n;i++)
log[i]=log[i/2]+1;
for (i=1;i<=n;i++)
fscanf (fin,"%d",&d[0][i]);
for (i=1;(1<<i)<=n;i++){
for (j=1;j<=n;j++){
d[i][j]=d[i-1][j];
if (j+(1<<(i-1))<=n)
d[i][j]=min(d[i][j],d[i-1][j+(1<<(i-1))]);
}
}
for (i=1;i<=q;i++){
fscanf (fin,"%d%d",&x,&y);
l=log[y-x+1];
sol=min(d[l][x],d[l][y-(1<<l)+1]);
fprintf (fout,"%d\n",sol);
}
return 0;
}