Pagini recente » Cod sursa (job #2059756) | Cod sursa (job #2449305) | Cod sursa (job #2858363) | Cod sursa (job #2642452) | Cod sursa (job #1333180)
#include <fstream>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int v[18][100001],m,n,i,j,mini,r,z,a,b,d;
int main()
{
fin>>n>>m;
for(i=1;i<=n;i++)
fin>>v[0][i];
for(i=1;1<<i<=n;i++)
{
r=(1<<(i-1))+1;
if(r==2)
n++;
for(j=1;j<=n-r;j++)
{
v[i][j]=min(v[i-1][j],v[i-1][j+r-1]);
}
if(r==2)
n--;
}
for(i=1;i<=m;i++)
{
fin>>a>>b;
if(b>a)
{
int aux=a;
a=b;
b=aux;
}
d=a-b+1;
z=0;
while((1<<z+1)<=d)
z++;
fout<<min(v[z][b],v[z][b-(1<<z)+d]);
fout<<'\n';
}
return 0;
}