Pagini recente » Cod sursa (job #2900263) | Cod sursa (job #2180437) | Cod sursa (job #1876626) | Cod sursa (job #2504271) | Cod sursa (job #1198041)
#include <fstream>
using namespace std;
ifstream in("rmq.in");
ofstream out("rmq.out");
const int lmax = 100001 , loglmax = 16;
int n , m , r[loglmax][lmax] , lg[lmax];
inline int min(int x, int y)
{
return x < y ? x : y;
}
int main()
{
int i , j , a , b , L;
in >> n >> m;
for(i = 1 ; i <= n ; i++)
in >> r[0][i];
for(i = 1 ; i < loglmax ; i++)
for(j = 1 ; j <= n ; j++)
{
if((1 << i) > j) continue;
r[i][j] = min(r[i - 1][j - (1 << (i - 1))] , r[i - 1][j]);
//out << j - (1 << (i - 1)) << "\n";
}
lg[1] = 0;
for(i = 2 ; i <= n ; i++)
lg[i] = 1 + lg[i / 2];
return 0;
for(i = 1 ; i <= m ; i++)
{
in >> a >> b;
L = lg[b - a + 1];
out << min(r[L][b] , r[L][a + (1 << L) - 1]) << '\n';
}
return 0;
}