Pagini recente » Cod sursa (job #1861468) | Cod sursa (job #446384) | Istoria paginii runda/cartofel | Cod sursa (job #1938304) | Cod sursa (job #2844781)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int i,n,k,m,j,p,r,x,y;
int rmq[10001][10001];
int v[1001];
void precalc()
{
for(i=1; i<=n; i++)rmq[0][i]=v[i];
for(k=1; 1<<k<=n; k++)
{
j=1<<k;
for(i=1; i<=n-j+1; i++)
{
rmq[k][i]=min(rmq[k-1][i],rmq[k-1][i+j/2]);
}
}
}
int main()
{
fin>>n>>m;
for(i=1; i<=n; i++)fin>>v[i];
precalc();
for(i=1; i<=m; i++)
{
fin>>x>>y;
r=log2(y-x+1);
fout<<min(rmq[r][y-(1<<r)+1],rmq[r][x])<<'\n';
}
return 0;
}