Pagini recente » Cod sursa (job #2617271) | Cod sursa (job #1613740) | Cod sursa (job #1668098) | Cod sursa (job #637519) | Cod sursa (job #1687355)
#include<fstream>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int r[100001][18],v[1000001],log[100001],n,m;
int minim(int a,int b)
{
if(a<b)
return a;
return b;
}
void pre_log()
{
int i;
log[1]=0;
for(i=2;i<=n;i++)
{
log[i]=1+log[i/2];
}
}
void pre_mat()
{
int i,j;
for(i=1;i<=n;i++)
{
r[i][0]=v[i];
for(j=1;(1<<j)<=i;j++)
r[i][j]=minim(r[i][j-1], r[i-(1<<(j-1))][j-1]);
}
}
int sol(int a,int b)
{
int l=log[b-a+1];
return minim(r[b][l], r[a+(1<<l)-1][l]);
}
int main()
{
int i,x,y;
f>>n>>m;
for(i=1;i<=n;i++)
f>>v[i];
pre_log();
pre_mat();
for(i=1;i<=m;i++)
{
f>>x>>y;
g<<sol(x,y)<<"\n";
}
return 0;
}