Pagini recente » Cod sursa (job #3208845) | Cod sursa (job #1074533) | Cod sursa (job #518830) | Cod sursa (job #426648) | Cod sursa (job #1435166)
#include <fstream>
#include <iostream>
using namespace std;
ifstream in("rmq.in");
ofstream out("rmq.out");
int n,m,i,j,a,b;
int d[19][100010];
int lg[100010];
int main() {
in>>n>>m;
for (i=1;i<=n;i++)
in>>d[0][i];
for(i=1;(1<<i)<=n;i++)
{
for(j=1;j<=n-(1<<i)+1;j++)
{
d[i][j]=min(d[i-1][j],d[i-1][j+(1<<(i-1))]);
}
}
/*for(i=0;(1<<i)<=n;i++)
{
for(j=1;j<=n;j++)
{
out<<d[i][j]<<" ";
}
out<<'\n';
}
*/
for(i=2 ; i<=n ; ++i)
lg[i] = lg[i/2]+1;
for(i=1;i<=m;i++)
{
in>>a>>b;
int dim=b-a+1;
int lin=lg[dim];
out<<min(d[lin][a],d[lin][b-(1<<lin)+1])<<'\n';
}
return 0;
}