Pagini recente » Cod sursa (job #1255827) | Cod sursa (job #2127269) | Cod sursa (job #2758828) | Cod sursa (job #1326418) | Cod sursa (job #1973036)
#include <fstream>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int n,k,i,j;
int D[17][100002];
int P[100002];
int a,b;
int t,l;
int main()
{
fin >> n >> k;
for (i=1; i<=n; i++)
fin >> D[0][i];
P[1] = 0;
for (i=2; i<=n; i++)
P[i] = P[i/2]+1;
for (i=1; i<=P[n]; i++)
for (j=1; j<=n; j++)
{
D[i][j] = D[i-1][j];
if (j+(1<<(i-1)) <= n)
D[i][j] = min(D[i][j], D[i-1][j+(1<<(i-1))]);
}
for (i=1; i<=k; i++)
{
fin >> a >> b;
l = P[b-a+1];
t = min(D[l][a], D[l][b-(1<<l)+1]);
fout << t << "\n";
}
return 0;
}