Pagini recente » Cod sursa (job #1953201) | Cod sursa (job #2961797) | Cod sursa (job #1473810) | Cod sursa (job #2163449) | Cod sursa (job #1966778)
#include <stdio.h>
#include <algorithm>
#include <math.h>
using namespace std;
#define MAX 2000000
FILE*f=fopen("rmq.in","r");
FILE*g=fopen("rmq.out","w");
int a[20][100010],v[100010];
int n,m;
int main()
{
int i,x,y,j;
fscanf(f,"%d%d",&n,&m);
for (i=1;i<=n;i++)v[i]=MAX;
for (i=1;i<=n;i++){
fscanf(f,"%d",&a[0][i]);
}
for (j=1;1<<j<=n;j++){
for (i=1;i+(1<<j)-1<=n;i++){
a[j][i]=min(a[j-1][i],a[j-1][i+(1<<(j-1))]);
}
}
for (i=1;i<=m;i++){
fscanf(f,"%d%d",&x,&y);
int k=log(y-x+1);
fprintf(g,"%d\n",min(a[k][x],a[k][x+(1<<k-1)]));
}
fclose(f);
fclose(g);
return 0;
}