Pagini recente » Cod sursa (job #880859) | Cod sursa (job #2011777) | Cod sursa (job #2013703) | Cod sursa (job #3327145) | Cod sursa (job #2671673)
#include <fstream>
#include <cmath>
using namespace std;
ifstream f ("rmq.in");
ofstream g ("rmq.out");
int n, k;
int v[100005];
int b[1005];
const int inf = 2e9;
int main()
{
f >> n >> k;
for (int i=1; i<=n; i++)
f >> v[i];
int len = sqrt(n) + 1;
for (int i=1; i<=n; i++)
{
if (i <= len) b[i] = inf;
b[i / len] = min(b[i / len], v[i]);
}
for (; k; k--)
{
int l, r;
int rez = inf;
f >> l >> r;
for (int i=l; i<=r; )
{
if (i % len == 0 && i + len - 1 <= r)
{
rez = min(rez, b[i / len]);
i += len;
}
else
{
rez = min(rez, v[i]);
i ++;
}
}
g << rez << "\n";
}
return 0;
}