Pagini recente » Cod sursa (job #909628) | Cod sursa (job #2512522) | Cod sursa (job #3036486) | Cod sursa (job #2397371) | Cod sursa (job #2791096)
#include <fstream>
#define dim 100001
int n, m, d[30][dim], p[dim], i, j, l, val, x, y;
using namespace std;
int main()
{
ifstream fin ("rmq.in");
ofstream fout ("rmq.out");
fin>>n>>m;
for (i=1; i<=n; i++)
fin>>d[0][i];
p[0]=-1;
for (i=1; i<=n; i++)
p[i]=p[i/2]+1;
for (l=1; l<=p[n]; l++)
for (i=1; i<=n; i++)
{
d[l][i]=d[l-1][i];
val=i+(1<<(l-1));
if (val<=n && d[l][i]>d[l-1][val])
d[l][i]=d[l-1][val];
}
for (i=1; i<=m; i++)
{
fin>>x>>y;
l=y-x+1;
fout<<min(d[p[l]][x], d[p[l]][y-(1<<p[l])+1])<<"\n";
}
}