Pagini recente » Cod sursa (job #1412292) | Cod sursa (job #1022687) | Cod sursa (job #2545128) | Cod sursa (job #3232724) | Cod sursa (job #2742113)
#include <fstream>
using namespace std;
const int Nmax = 100000;
int log2[Nmax+1], a[17][Nmax+1], v[Nmax];
int main()
{
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int n, m;
fin >> n >> m;
for (int i = 2; i <= Nmax; i++)
{
log2[i] = log2[i/2] + 1;
}
for (int i = 1; i <= n; i++)
{
fin >> v[i];
}
for (int i = 1; i <= n; i++)
{
a[0][i] = v[i];
}
for (int i = 1; i <= log2[n]; i++)
{
for (int j = 1; j <= n; j++)
{
a[i][j] = min(a[i-1][j], a[i-1][j-(1<<(i-1))]);
}
}
for (int i = 1; i <= m; i++)
{
int l, r;
fin >> l >> r;
fout << min(a[log2[r-l+1]][r], a[log2[r-l+1]][l+(1<<log2[r-l+1])-1]) << "\n";
}
return 0;
}