Pagini recente » Cod sursa (job #2486716) | Cod sursa (job #1549027) | Cod sursa (job #1377677) | Cod sursa (job #1325581) | Cod sursa (job #1347775)
#include <iostream>
#include <fstream>
#define N 100003
using namespace std;
int rmq[18][N];
int lg[N];
int a[N];
int n,m;
void Lungime()
{
lg[1]=0;
for(int i=2; i<=n; i++)
lg[i]=lg[i/2]+1;
}
void Create_Rmq()
{
int i,j,k;
for(i=1; i<=n; i++)
rmq[0][i]=a[i];
for(i=1; (1<<i)<=n; i++)
for(j=(1<<i); j<=n; j++)
{
k=1<<(i-1);
rmq[i][j]=min(rmq[i-1][j],rmq[i-1][j-k]);
}
}
int main()
{
ifstream fin("rmq.in");
ofstream fout("rmq.out");
fin>>n>>m;
int i,x,y,sol,d;
for(i=1; i<=n; i++)
fin>>a[i];
Lungime();
Create_Rmq();
//cout<<rmq[1][3]<<" ";
for(i=1; i<=m; i++)
{
fin>>x>>y;
d=lg[y-x+1];
sol=min(rmq[d][x+(1<<d)-1],rmq[d][y]);
fout<<sol<<"\n";
}
return 0;
}