Pagini recente » Cod sursa (job #2182367) | Cod sursa (job #2746065) | Cod sursa (job #3253115) | Cod sursa (job #3209778) | Cod sursa (job #1836657)
#include <fstream>
using namespace std;
int n, m, v[20][100005], i, d=2, lg[100005], q1, q2, j, p;
ifstream f ("rmq.in");
ofstream g ("rmq.out");
int main ()
{
f>>n>>m;
for (i=1; i<=n; i++)
{
f>>v[1][i];
}
lg[1]=1;
for (i = 2; i<=100004 ; i++)
{
lg[i]=lg[i/2] + 1;
}
for (i=2; i<=lg[n]; i++)
{
for (j=1; j<=n-d+1; j++)
{
v[i][j]=min(v[i-1][j], v[i-1][j+ (d / 2) ]);
}
d*=2;
}
for (i=1; i<=m; i++)
{
f>>q1>>q2;
d=q2-q1+1;
d=lg[d];
p= 1<<(d-1) ;
g<<min ( v[d][q1] , v[d][q2 - p + 1 ] ) << '\n';
}
return 0;
}