Pagini recente » Monitorul de evaluare | Diferente pentru problema/tarc intre reviziile 3 si 4 | Cod sursa (job #2027751) | Cod sursa (job #3314531) | Cod sursa (job #2048754)
#include<fstream>
#define DN 100005
#include<iostream>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int n,m,x,y,r[35][DN],a[DN],mi=(1<<28),d[DN],t,h;
int main()
{
fin>>n>>m;
for(int i=1;i<=n;i++)
{
fin>>a[i];
r[0][i]=a[i];
}
for(int j=1;j<=17;j++)
for(int i=1;i<=n;i++)
{
if((1<<j)<=i)
d[i]=j;
if(i+(1<<j)-1<=n)
{
r[j][i]=min(r[j-1][i],r[j-1][i+(1<<j-1)]);
}
}
for(int i=1;i<=m;i++)
{
fin>>x>>y;
t=y-x+1;
h=d[t];
fout<<min(r[h][x],r[h][x+t-(1<<h)])<<'\n';
}
}