Pagini recente » Cod sursa (job #524935) | Cod sursa (job #2094715) | Cod sursa (job #3232833) | Cod sursa (job #1260081) | Cod sursa (job #1916194)
#include <fstream>
#define min(a,b) ((a<b) ? (a) : (b))
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int n, m, k, x, y, a[25][100005];
int main()
{
int i, nr=0, j;
fin >> n >> m;
for (i = 1; i <= n; i++)
fin >> a[0][i];
for (k = 1; (k << 1) <= n; k <<= 1,nr++);
k = 2;
for (i = 1; i <= nr; i++, k <<= 1)
for (j = 1; j <= n - k + 1; j++)
a[i][j] = min(a[i - 1][j], a[i - 1][j + (k >> 1)]);
for (i = 1; i <= m; i++)
{
fin >> x >> y;
for (k = 0; 1 << (k+1) <= y - x; k++);
fout << min(a[k][x], a[k][y - (1 << k) + 1]);
fout << '\n';
}
return 0;
}