Pagini recente » Cod sursa (job #622800) | Cod sursa (job #2060626) | Cod sursa (job #1389859) | Cod sursa (job #2515802) | Cod sursa (job #850190)
Cod sursa(job #850190)
#include <fstream>
using namespace std;
ifstream f ( "rmq.in" );
ofstream g ( "rmq.out" );
#define LE 100666
int i, n, m, log, rmq[18][LE], x, y, a[LE], lg[LE];
int main()
{
f >> n >> m;
for ( i = 1; i <= n; ++i )
{
f >> a[i];
rmq[0][i] = a[i];
}
for ( i = 2, lg[1] = 0; i <= n; ++i )
lg[i] = lg[i/2] + 1;
for ( log = 1; ( 1 << log ) <= n; ++log )
for ( i = 1; i + ( 1 << log ) - 1 <= n; ++i )
rmq[log][i] = min ( rmq[log-1][i], rmq[log-1][i+ ( 1<< ( log-1 ) ) ] );
int dif;
for ( i = 1; i <= m; ++i )
{
f >> x >> y;
dif = y - x + 1;
g << min ( rmq[lg[dif]][x], rmq[lg[dif]][y- ( 1<<lg[dif] ) +1] ) << '\n';
}
f.close();
g.close();
return 0;
}