Pagini recente » Cod sursa (job #2270008) | Cod sursa (job #1258568) | Cod sursa (job #2785178) | Cod sursa (job #2909938) | Cod sursa (job #2284641)
#include <bits/stdc++.h>
#define NMAX 100000
#define MMAX 1000000
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int n, m, RMQ[20][NMAX];
int main()
{
int i, j, p2=1;
f>>n>>m;
for(i=1;i<=n;i++)
f>>RMQ[0][i];
for(i=1;p2<=m;i++)
{
for(j=1;j+p2<=n;j++)
RMQ[i][j]=min(RMQ[i-1][j], RMQ[i-1][j+p2]);
p2=p2*2;
}
int x, y, lung;
for(i=1;i<=m;i++)
{
f>>x>>y;
lung=y-x+1;
p2=0;
while(lung>1)
{
p2++;
lung=(lung>>1);
}
g<<min(RMQ[p2][x],RMQ[p2][y-(1<<p2)+1])<<"\n";
}
return 0;
}