Pagini recente » Cod sursa (job #190024) | Cod sursa (job #946979) | Monitorul de evaluare | Atasamentele paginii wellcodesimulareoni2 | Cod sursa (job #1445833)
#include <fstream>
#define MAX 100003
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int n,m,v[MAX],logg[MAX],mat[17][MAX];
void citire()
{
fin>>n>>m;
for(int i=1;i<=n;i++)
fin>>v[i];
for(int i=2;i<=n;i++)
logg[i]=1+logg[i/2];
for(int i=1;i<=n;i++)
mat[0][i]=i;
for(int i=1;i<=logg[n];i++)
for(int j=1;j<=n+1-(1<<i);j++)
if(v[mat[i-1][j]]<v[mat[i-1][j+(1<<(i-1))]])
mat[i][j]=mat[i-1][j];
else
mat[i][j]=mat[i-1][j+(1<<(i-1))];
for(int i=1;i<=m;i++)
{
int x,y;
fin>>x>>y;
int lin=logg[y-x+1];
if(v[mat[lin][x]]<v[mat[lin][y+1-(1<<lin)]])
fout<<v[mat[lin][x]]<<'\n';
else
fout<<v[mat[lin][y+1-(1<<lin)]]<<'\n';
}
}
int main()
{
citire();
return 0;
}