Pagini recente » Cod sursa (job #2390770) | Cod sursa (job #140254) | Cod sursa (job #2357422) | Cod sursa (job #1580354) | Cod sursa (job #2102454)
#include <fstream>
#include <math.h>
#include <iostream>
#define V(n) RMQ[(n)][0]
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
long N,K;
long P2(long x)
{
return (1<<(x));
}
int main()
{
f>>N>>K;
int L=log2(N);
long RMQ[N][L+1];
for(int i=0;i<N;i++)
f>>RMQ[i][0];
int N1=N;
for(int j=1;j<=L;j++)
{
N1-=P2(j-1);
for(int i=0;i<N1;i++)
{
RMQ[i][j]=RMQ[i][j-1];
int P=(P2(j-1));
for(int k=1;k<=P;k++)
RMQ[i][j]=min(RMQ[i][j],RMQ[i+k][j-1]);
}
}
int st,dr;
long result;;
for(int i=0;i<K;i++)
{
f>>st>>dr;
int L=log2(dr-st+1);
result=RMQ[st-1][L];
int M=dr-P2(L)+1;
for(int j=st+1;j<=M;j++)
result=min(result,RMQ[j-1][L]);
g<<result<<'\n';
}
return 0;
}