Pagini recente » Cod sursa (job #2871329) | Cod sursa (job #1436537) | Cod sursa (job #2749356) | Cod sursa (job #3260715) | Cod sursa (job #3185461)
#include <iostream>
#include <vector>
#include <cmath>
#include <fstream>
using namespace std;
ifstream fin ("rmq.in");
ofstream fout ("rmq.out");
int ma[19][100002];
int lg[100002];
int main()
{
lg[1]=0;
int n,m;
fin>>n>>m;
for (int i=1;i<=n;i++)
fin>>ma[0][i];
lg[1]=0;
for (int i=2;i<=n;i++)
lg[i]=lg[i/2]+1;
for(int k=1;(1<<k)<=n;k++)
{
int lu=(1<<k);
int lu1=1<<(k-1);
for(int c=1;c<=n-(lu)+1;c++)
ma[k][c]=min(ma[k-1][c],ma[k-1][c+lu1]);
}
int l,j;
int pu;
for(int k=1;k<=m;k++)
{
fin>>l>>j;
int lu=j-l+1;
pu=lg[lu];
fout<<min(ma[pu][l],ma[pu][j-(1<<lg[lu])+1])<<'\n';
}
return 0;
}