Pagini recente » Cod sursa (job #2212082) | Cod sursa (job #1257845) | Cod sursa (job #1626139) | Cod sursa (job #2876084) | Cod sursa (job #2230012)
#include <bits/stdc++.h>
#define VAL 300005
#define INF 100000005
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int rmq[VAL][25],log1[VAL],v[VAL];
int main()
{
int n,m,p = 0,ans,x,y,a,b;
fin >> n >> m;
for (int i = 1;i <= n;i++)
{
fin >> v[i];
rmq[i][0] = v[i];
log1[i] = p;
if (i == 2 * (1 << p))
p++;
}
for (int j = 1;j <= p;j++)
for (int i = 1;i <= n;i++)
rmq[i][j] = INF;
for (int j = 1;j <= p;j++)
for (int i = 1;i + (1 << j) - 1 <= n;i++)
rmq[i][j] = min(rmq[i][j - 1], rmq[i + (1 << (j - 1))][j - 1]);
for (int i = 1;i <= m;i++)
{
fin >> x >> y;
a = log1[y - x + 1];
b = (1 << a);
ans = min(rmq[x][a], rmq[y - b + 1][a]);
fout << ans << '\n';
}
return 0;
}