Pagini recente » Cod sursa (job #2894253) | Cod sursa (job #3171793) | Cod sursa (job #595034) | Cod sursa (job #2943700) | Cod sursa (job #1319867)
#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++)
{mini=100000000;
for(z=j;z<j+r;z++)
mini=min(mini,v[i-1][z]);
v[i][j]=mini;
}
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;
}