Pagini recente » Cod sursa (job #2053294) | Cod sursa (job #793407) | Cod sursa (job #2260271) | Istoria paginii runda/may_you_do_it | Cod sursa (job #2758238)
#include <bits/stdc++.h>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int n,lg[10005],d[1005][100015],a,q,x,y,m,s,k;
int main()
{
f >> n >> m;
for(int i = 1; i <= n; i ++ )
{
f >> a;
d [0][i] = a;
}
lg [1] = 0;
for(int i = 2; i <= 10015; i ++ ) lg [i] = lg [i / 2] + 1;
for(int i = 1; i <= lg [n]; i ++ )
{
for(int j = 1; j <= n - ( 1 << ( i ) ) + 1; j ++)
{
q = 1 << ( i - 1 );
d [i][j] = min ( d [i-1][j], d [i-1][j+q] );
}
}
for(int i = 1; i <= m; i ++ )
{
f >> x >> y;
k = lg [ y - x ];
g << min ( d [k][x], d [k][y - ( 1 << k ) + 1]) << '\n';
}
return 0;
}