Pagini recente » Cod sursa (job #1543735) | Cod sursa (job #32978) | Cod sursa (job #2258651) | Cod sursa (job #2566473) | Cod sursa (job #2157482)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("rmq.in");
ofstream out("rmq.out");
const int N=100001;
int log2[N],v[N],r[N][17],n,m;
int main()
{
int i,j,a,b,l,rez;
in>>n>>m;
for(i=1;i<=n;i++)
in>>v[i];
for(i=2;i<=n;i++)
log2[i]=1+log2[i/2];
for(i=1;i<=n;i++)
{
r[i][0]=v[i];
j=1;
while((1<<j)<=i)
{
r[i][j]=min(r[i-(1<<(j-1))][j-1],r[i][j-1]);
j++;
}
}
for(i=1;i<=m;i++)
{
in>>a>>b;
l=log2[b-a+1];
rez=min(r[b][l],r[a+(1<<l)-1][l]);
out<<rez<<'\n';
}
return 0;
}