Pagini recente » Cod sursa (job #225891) | Cod sursa (job #2719817)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
#include <queue>
#include <stack>
#include <cstring>
using namespace std;
#define NMAX 100005
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int n, q, i, j, mat[20][NMAX], log[NMAX], x, y, dist;
int main()
{
fin>>n>>q;
for(i=1; i<=n; i++)
{
fin>>mat[0][i];
}
log[0]=log[1]=0;
for(i=2; i<=n; i++)
log[i]=log[i>>1]+1;
for(i=1; i<=log[n]; i++)
{
for(j=1; j+(1<<(i-1))<=n; j++)
{
mat[i][j]=min(mat[i-1][j],mat[i-1][j+(1<<(i-1))]);
}
}
while(q>0)
{
fin>>x>>y;
dist=log[y-x+1];
fout<<min(mat[dist][x],mat[dist][y-(1<<dist)+1])<<'\n';
q--;
}
return 0;
}