Pagini recente » Cod sursa (job #2391568) | Cod sursa (job #2824845) | Cod sursa (job #2591009) | Cod sursa (job #1001239) | Cod sursa (job #2496593)
#include <fstream>
using namespace std;
ifstream in ("rmq.in");
ofstream out ("rmq.out");
int lg2[100007];
int n, m;
int mn[18][100007];
int put;
int x, y;
int main()
{
in >> n >> m;
for ( register int i = 2 ; i <= n ; ++i )
lg2[i] = lg2[i/2]+1;
for ( register int i = 1 ; i <= n ; ++i )
in >> mn[0][i];
for ( register int i = 1 ; i <= lg2[n] ; ++i )
{
put = (1<<i);
for ( register int j = 1 ; j <= n-put/2 ; ++j )
mn[i][j] = min ( mn[i-1][j], mn[i-1][j+put/2] );
}
for ( register int querry = 1 ; querry <= m ; ++querry )
{
in >> x >> y;
out << min ( mn[lg2[y-x+1]][x], mn[lg2[y-x+1]][y-(1<<lg2[y-x+1])+1] ) << '\n';
}
return 0;
}