Pagini recente » Cod sursa (job #499621) | Cod sursa (job #1999792) | Cod sursa (job #2941753) | Cod sursa (job #1212935) | Cod sursa (job #2350169)
#include <cstdio>
#define N 100002
#include <iostream>
using namespace std;
FILE *f,*g;
int a[20][N],log[N];
int main()
{
f=fopen("rmq.in","r");
g=fopen("rmq.out","w");
int n,m;
fscanf(f,"%d %d",&n,&m);
fscanf(f,"%d",&a[0][1]);
for(int j=2;j<=n;++j)
{
fscanf(f,"%d",&a[0][j]);
log[j]=1+log[j/2];
}
for(int i=1;i<=log[n];++i)
for(int j=1;j<=(n+1)-(1<<i);++j)
a[i][j]=min(a[i-1][j],a[i-1][j+(1<<(i-1))]);
int x,y,dif,val,lin;
for(int i=1;i<=m;++i)
{
fscanf(f,"%d %d",&x,&y);
dif=y-x+1;
lin=log[dif];
val=min(a[lin][x],a[lin][y-(1<<lin)+1]);
fprintf(g,"%d\n",val);
}
fclose(f);
fclose(g);
return 0;
}