Pagini recente » Cod sursa (job #3292147) | Cod sursa (job #1841716) | Cod sursa (job #2228688) | Cod sursa (job #2416696) | Cod sursa (job #1753858)
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <math.h>
using namespace std;
FILE *f=fopen("rmq.in","r");
int dp[20][100020],n,m;
void citire()
{
fscanf(f,"%d%d",&n,&m);
for(int i=1;i<=n;i++)
fscanf(f,"%d",&dp[0][i]);
}
void vec( )
{
for(int i=1;i<=n;i++)
for(int j=1;j+(1<<i)<=n+1;j++)
dp[i][j]=min(dp[i-1][j],dp[i-1][j+(1<<(i-1))]);
}
int rmq(int x, int y)
{
int p = log2(y-x+1);
return min(dp[p][x],dp[p][y-(1<<p)+1]);
}
FILE *f1=fopen("rmq.out","w");
void rez( )
{
int x,y;
for(int i=1;i<=m;i++)
{fscanf(f,"%d%d",&x,&y);
fprintf(f1,"%d\n",rmq(x,y));
}
}
int main()
{
citire();
vec();
rez();
return 0;
}