Pagini recente » Cod sursa (job #796141) | Cod sursa (job #51722) | Cod sursa (job #1814073) | Cod sursa (job #300712) | Cod sursa (job #3179577)
#include <bits/stdc++.h>
using namespace std;
ifstream in("rmq.in");
ofstream out("rmq.out");
const int bsize = 220;
int n,q,a[100005];
int bmin[1005];
int main()
{
in >> n >> q;
for (int i = 1; i <= n; i++)
in >> a[i];
for (int i = 0; i <= n / bsize; i++)
bmin[i] = 1e9;
for (int i = 1; i <= n; i++)
bmin[i / bsize] = min(bmin[i / bsize],a[i]);
for (int i = 1; i <= q; i++)
{
int l,r;
in >> l >> r;
int bucketl = l / bsize,bucketr = r / bsize;
if (bucketl + 1 >= bucketr)
{
int minim = 1e9;
for (int j = l; j <= r; j++)
minim = min(minim,a[j]);
out << minim << '\n';
}
else
{
int minim = 1e9;
for (int j = l; j < bsize * (bucketl + 1); j++)
minim = min(minim,a[j]);
for (int j = bsize * bucketr; j <= r; j++)
minim = min(minim,a[j]);
for (int j = bucketl + 1; j < bucketr; j++)
minim = min(minim,bmin[j]);
out << minim << '\n';
}
}
return 0;
}