Pagini recente » Cod sursa (job #255465) | Cod sursa (job #2590234) | Cod sursa (job #1201691) | Cod sursa (job #582165) | Cod sursa (job #705497)
Cod sursa(job #705497)
#include <fstream>
#define MAXN 100010
using namespace std;
int log[MAXN],i,j,k,a[MAXN],M[MAXN][20],x,y,n,m;
int main()
{
ifstream fi("rmq.in");
ofstream fo("rmq.out");
fi>>n>>m;
for(i=1;i<=n;i++) { fi>>a[i]; M[i][0]=i; }
for(i=2;i<=n;i++)
log[i]=log[i/2]+1;
for(k=1;(1<<k)<=n;k++)
for(i=1;i<=n and i+(1<<k)-1<=n;i++)
if(a[M[i][k-1]]<a[M[i+(1<<(k-1))][k-1]]) M[i][k]=M[i][k-1]; else
M[i][k]=M[i+(1<<(k-1))][k-1];
for(i=1;i<=m;i++)
{
fi>>x>>y;
k=y-x+1;
fo<<min(a[M[x][log[k]]],a[M[y-(1<<log[k])+1][log[k]]])<<"\n";
}
return 0;
}