Pagini recente » Cod sursa (job #307311) | Cod sursa (job #2613838) | Cod sursa (job #998901) | Cod sursa (job #3155254) | Cod sursa (job #2323692)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int n, m, dp[100][100005];
//log(n)/log(2);
int main()
{
fin >> n >> m;
for(int i = 1; i <= n; i++)
fin >> dp[0][i];
for(int i = 1; (1<<i) <= n; i++)
{
for(int j = 1; j+(1<<i)-1 <= n; j++)
dp[i][j] = min(dp[i-1][j], dp[i-1][j+(1<<(i-1))]);
}
while(m--)
{
int x, y, h;
fin >> x >> y;
float k;
k = log(y-x+1)/log(2);
h = (int) k;
fout << min(dp[h][x], dp[h][y-(1<<h)+1]) << '\n';
}
return 0;
}