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