Pagini recente » Cod sursa (job #3185998) | Cod sursa (job #137504) | Cod sursa (job #2782639) | Cod sursa (job #2514441) | Cod sursa (job #780124)
Cod sursa(job #780124)
#include <fstream>
#include <math.h>
#define MAXN 100005
#define log2_MAXN 20
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
long n,m,v[MAXN],x,y,l2,mn[MAXN][log2_MAXN];
long minim(long a,long b){
return a<b?a:b;}
int main()
{
long i,j;
f>>n>>m;
for(i=1;i<=n;i++)
f>>v[i];
for(i=1;i<=n;i++)
mn[i][0]=v[i];
for(j=1;(1<<j)<=n;j++){
x=1<<j;
for(i=1;i+x-1<=n;i++)
mn[i][j]=minim(mn[i][j-1],mn[i+(x>>1)][j-1]);}
for(i=1;i<=m;i++){
f>>x>>y;
l2=floor(log2((double)(y-x+1)));
g<<minim(mn[x][l2],mn[y-(1<<l2)+1][l2])<<'\n';}
f.close();
g.close();
return 0;
}