Pagini recente » Cod sursa (job #2493342) | Cod sursa (job #925954) | Cod sursa (job #160996) | Cod sursa (job #2300104) | Cod sursa (job #1809728)
#include <cstdio>
#include <algorithm>
using namespace std;
FILE *f=fopen("rmq.in","r");
FILE *g=fopen("rmq.out","w");
int dp[20][100005],a,b;
int N,Q;
int main()
{
fscanf(f,"%d%d",&N,&Q);
for(int i=1;i<=N;i++)
fscanf(f,"%d",&dp[0][i]);
for(int j=1;(1<<j)<=N;j++)
{
for(int i=1;i+(1<<j)-1<=N;i++)
{
dp[j][i]=min(dp[j-1][i],dp[j-1][i+(1<<(j-1))]);
}
}
while(Q)
{
fscanf(f,"%d%d",&a,&b);
int rez=(1<<30),dist=b-a+1,p2=0;
while((1<<p2)<=dist)
p2++;
p2--;
rez=min(dp[p2][a],dp[p2][b-(1<<p2)+1]);
fprintf(g,"%d\n",rez);
Q--;
}
fclose(f);
fclose(g);
return 0;
}