Pagini recente » Cod sursa (job #1393393) | Cod sursa (job #141286) | Cod sursa (job #1368328) | Cod sursa (job #2327225) | Cod sursa (job #2812102)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
const int NMAX = 100000;
int v[NMAX+5];
int rmq[NMAX+5][20];
int log[NMAX+5];
int main()
{
int x, y, n, m, i, j, lg;
fin>>n>>m;
for(i=1;i<=NMAX;i++)
{
log[i]=log[i/2]+1;
}
for(i=1;i<=n;i++)
fin>>v[i];
for(i=1;i<=n;i++)
rmq[i][0]=v[i];
for (j=1; (1 << j) <=n;j++)
{
for (i=0;i + (1 << j) - 1 <= n;i++)
{
rmq[i][j]=min(rmq[i][j-1],rmq[i+(1<<(j-1))][j-1]);
}
}
for(i=1;i<=m;i++)
{
fin>>x>>y;
lg = log[y-x+1]-1;
fout<<min(rmq[x][lg],rmq[y+1-(1<<lg)][lg])<<"\n";
}
return 0;
}