Pagini recente » Cod sursa (job #1318650) | Cod sursa (job #518329) | Cod sursa (job #2406400) | Cod sursa (job #1508780) | Cod sursa (job #2100716)
#include <fstream>
#include <math.h>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
long N,K;
int main()
{
f>>N>>K;
int L=log2(N);
long M[N][L+1];
for(int i=0;i<N;i++) f>>M[i][0];
for(int i=1;i<=L;i++)
{
int P=(1<<(i));
int A=N-P+1;
for(int j=0;j<A;j++)
M[j][i]=min(M[j][i-1],M[j+P-i][i-1]);
}
long X1,X2;
for(int i=0;i<K;i++)
{
f>>X1>>X2;
int Q=X2-X1+1,j=0;
long Min=M[X1-1][0];
while(Q>0)
{
if(Q & 1)
{
Min=min(Min,M[X1-1][j]);
X1+=j+1;
}
j++;
Q>>=1;
}
g<<Min<<'\n';
}
return 0;
}