Pagini recente » Cod sursa (job #60414) | Cod sursa (job #1563134) | Cod sursa (job #2644019) | Cod sursa (job #1353706) | Cod sursa (job #744721)
Cod sursa(job #744721)
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
int n,m,C[18][100010];
void RMQ(){
for(int j=1;1<<j<=n;j++)
{
for(int i=0;i+(1<<j)-1<=n;i++)
C[i][j]=min(C[i][j-1],C[i+(1<<(j-1))][j-1]);
}
}
int main(){
int x,y,k;
freopen("rmq.in","r",stdin);
freopen("rmq.out","w",stdout);
scanf("%d %d",&n,&m);
for(int i=0;i<n;i++)scanf("%d",&C[i][0]);
RMQ();
for(int i=0;i<m;i++)
{
scanf("%d %d",&x,&y);
k=double(log(y-x+1)/log(2));
printf("%d\n",min(C[x-1][k],C[y-(1<<k)][k]));
}
/*for(int i=0;i<=10;i++)
{
for(int j=0;j<=10;j++)printf("%d ",C[i][j]);
printf("\n");
}*/
return 0;
}