Pagini recente » Cod sursa (job #934474) | Cod sursa (job #2318914) | Cod sursa (job #673755) | Cod sursa (job #1895984) | Cod sursa (job #3206498)
#include <iostream>
#include <fstream>
#include <cmath>
#define nmx 100005
using namespace std;
int n,a,b,m,v[nmx][17],lg[nmx],p2[20];
int main()
{
ifstream f ("rmq.in");
ofstream g ("rmq.out");
f>>n>>m;
p2[0]=1;
for (int i=1;i<=17;i++)
p2[i]=2*p2[i-1];
for (int i=1;i<=n;i++)
f>>v[i][0];
for (int i=2;i<=nmx-5;i++)
lg[i]=1+lg[i/2];
for (int p=1;p<=16;p++)
for (int i=1;i<=n-p2[p]+1;i++)
v[i][p]=min(v[i][p-1],v[i+p2[p-1]][p-1]);
for (int i=1;i<=m;i++)
{
f>>a>>b;
if (b<a) swap(a,b);
int sz=lg[b-a+1];
g<<min(v[a][sz],v[b-p2[sz]+1][sz])<<'\n';
}
}