Pagini recente » Cod sursa (job #1322949) | Cod sursa (job #2519440) | Cod sursa (job #2641146) | Cod sursa (job #975930) | Cod sursa (job #3036832)
#include <bits/stdc++.h>
using namespace std;
int n,m,v[100000][17],a,b,i,j,p=2,k,mini=2147483648,lun,ult,nrp;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int main()
{
fin >> n >> m;
for (i = 1;i <= n;i++)
fin >> v[0][i];
for (i = 1;i <= 16;i++){nrp++;
if (p > n)break;
for (j = 1;j <= n-p+1;j++){mini=2147483647;
if (v[i-1][j] < mini)mini=v[i-1][j];
if (v[i-1][j+(p/2)] < mini)mini=v[i-1][j+(p/2)];
v[i][j] = mini;
}
p*=2;
}
for (i = 1;i <= m;i++){
fin >> a >> b;
if (a > b)swap(a,b);
lun = b-a+1;
p=1;nrp=0;
while (p <= lun){p*=2;nrp++;}
p/=2;nrp--;
fout << min(v[nrp][a],v[nrp][a+(lun-p)]) << " ";
}
return 0;
}