Pagini recente » Cod sursa (job #1924883) | Cod sursa (job #742617) | Cod sursa (job #1373144) | Cod sursa (job #2274941) | Cod sursa (job #2164740)
#include <stdio.h>
#include <math.h>
#include <iostream>
using namespace std;
FILE*f=fopen("rmq.in","r");
FILE*g=fopen("rmq.out","w");
int sol,b,a2,j,t,a[100001],v[100001],n,m,i,j2;
int main()
{
fscanf(f,"%d%d",&n,&m);
for(i=1;i<=n;i++)
fscanf(f,"%d",&v[i]);
int w=sqrt(n);
for(i=0;i<=n/w;i++){a[i]=100001;
for(j=i*w+1;j<=min(i*w+w,n);j++){
a[i]=min(a[i],v[j]);
}
}
for(t=1;t<=m;t++){
fscanf(f,"%d%d",&a2,&b);sol=100001;
int j1=a2/w;
j2=b/w;
for(i=a2;i<=(j1+1)*w;i++) sol=min(v[i],sol);
for(j=j1+1;j<=j2-2;j++) sol=min(sol,a[j]);
for(i=(j2-1)*w+1;i<=b;i++) sol=min(sol,v[i]);
fprintf(g,"%d\n",sol);
}
return 0;
}