Pagini recente » Cod sursa (job #1495462) | Cod sursa (job #1724647) | Cod sursa (job #1275695) | Cod sursa (job #870621) | Cod sursa (job #1534639)
#include <fstream>
#include <cmath>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int A[100001],M[100001];
int main()
{
int x,y,N,K,i,j,minn = 1 << 30,right,left;
f >> N >> K;
int rad = sqrt(N);
for(i = 1; i <= N; i++) f >> A[i];
for(i = 1; rad * i <= N; i++)
{
M[i] = 1 << 30;
for(j = rad * (i - 1) + 1; j <= rad * i; j++)
M[i] = min(M[i],A[j]);
}
for(i = 1; i <= K; i++)
{
f >> x >> y;
minn = 1 << 30;
for(j = 1; rad * j < x; j++);
j++;
left = min(rad * (j - 1), y);
for (;rad * j <= y; j++)
minn = min(minn, M[j]);
right = max(rad * (j - 1), x);
for(j = x; j <= left; j++)
minn = min(minn, A[j]);
for(j = right; j <= y; j++)
minn = min(minn, A[j]);
g << minn << "\n";
}
return 0;
}