Pagini recente » Cod sursa (job #2542379) | Cod sursa (job #2456593) | Cod sursa (job #1689994) | Cod sursa (job #2860558) | Cod sursa (job #2480568)
#include <fstream>
using namespace std;
const int N = 100001;
const int L = 17;
ifstream ci ("rmq.in");
ofstream co ("rmq.out");
int r[L][N];
int log[N];
int query (int p, int q)
{
int l=log[q-p+1];
return min (r[l][p], r[l][q-(1<<l)+1]);
}
int main()
{
int n, m;
ci >> n >> m;
for (int j = 1; j <= n; j++)
{
cin >> r[0][j];
}
for (int i = 1; (1 << i) <= n; i++)
{
for (int j = 1; j + (1 << i) - 1 <= n; j++)
{
r[i][j] = min(r[i-1][j], r[i-1][j + (1 << (i-1))]);
}
}
log[1]=0;
for (int i=2; i<=n; i++)
{
log[i]=log[i/2]+1;
}
int a, b;
for (int i = 1; i <= m; i++)
{
ci >> a >> b;
co << query(a,b) << endl;
}
return 0;
}