Pagini recente » Cod sursa (job #360021) | Cod sursa (job #904809) | Cod sursa (job #543104) | Cod sursa (job #2407735) | Cod sursa (job #1690816)
# include <fstream>
# define DIM 100010
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int m[25][DIM],v[DIM],p[DIM],lg[25],n,i,j,a,b,m1,st,dr;
int main () {
fin>>n>>m1;
for(i=1;i<=n;i++){
fin>>v[i];
m[0][i]=v[i];
}
lg[0]=1;
for(i=1;i<=20;i++)
lg[i]=lg[i-1]*2;
for(i=2;i<=n;i++)
p[i]=p[i/2]+1;
for(i=1;i<=lg[p[n]];i++)
for(j=1;j<=n;j++)
if(j+lg[p[i-1]]<=n)
m[i][j]=min(m[i-1][j],m[i-1][j+lg[p[i-1]]]);
for(i=1;i<=m1;i++){
fin>>st>>dr;
a=p[dr-st+1];
b=lg[a];
fout<<min(m[a][st],m[a][dr-b+1])<<"\n";
}
return 0;
}