Pagini recente » Cod sursa (job #2898165) | Cod sursa (job #2711257) | Cod sursa (job #2376126) | Cod sursa (job #122827) | Cod sursa (job #2048542)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
//const int maxx=(1<<30);
int v[132010],n,m;
int mat[200010][17];
int log, pow, k,mi;
int poz1,poz2,poz,powf;
int main()
{
int i;
f>>n>>m;
//mi=maxx;
for (i=1;i<=n;i++)
{
f>>v[i];
// mi=min(mi,v[i]);
}
for (i=1;i<=n;i++)
{
mat[i][0]=v[i];
}
log=1;
while (log<n)
{
log*=2;
}
pow=1;
for (k=1;k<=log;k++)
{
pow*=2;
for (i=1;i<=n;i++)
{
powf=min(i+pow/2,n);
mat[i][k]=min(mat[i][k-1],mat[powf][k-1]);
}
}
for(i=1;i<=m;i++)
{
log=1;
f>>poz1>>poz2;
poz=poz2-poz1;
while (log*2<poz) log*=2;
mi=min(mat[poz1][log],mat[poz2-log][log]);
g<<mi<<"\n";
}
return 0;
}