Pagini recente » Cod sursa (job #1348418) | Cod sursa (job #1777908) | Cod sursa (job #95630) | Cod sursa (job #778219) | Cod sursa (job #3342341)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int n, m;
int rmq[20][100005];
int lg[100005];
int main()
{
fin >> n >> m;
for(int i = 2; i < 100005; i++)
lg[i] = lg[i/2]+1;
for(int i = 0; i < n; i++)
fin >> rmq[0][i];
for(int i = 1; i <= lg[n]; i++)
for(int j = 0; j+(1<<i)-1 < n; j++)
{
rmq[i][j] = min(rmq[i-1][j], rmq[i-1][(j+(1<<(i-1)))]);
//cout << rmq[i][j] << " ";
}
while(m--)
{
int x, y;
fin >> x >> y;
x--;
y--;
int l = y-x+1;
int lgg = lg[l];
fout << min(rmq[lgg][x], rmq[lgg][y-(1<<lgg)+1]) << "\n";
}
return 0;
}