Pagini recente » Cod sursa (job #1045327) | Cod sursa (job #1489611) | Cod sursa (job #1819743) | Cod sursa (job #967783) | Cod sursa (job #1765442)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int a[100100],rmq[100000][20],i,j,n,m,l,r;
int main()
{
fin >>n>>m;
for(i=0;i<n;i++) fin >>a[i];
for(i=0;i<n;i++){
rmq[i][0]=a[i];
}
for(j=1;int(pow(2,j))<=n;j++){
for(i=0;i+int(pow(2,j))-1<n;i++){
if (rmq[i][j-1]<rmq[i+int(pow(2,j-1))][j-1]) rmq[i][j]=rmq[i][j-1];
else rmq[i][j]=rmq[i+int(pow(2,j-1))][j-1];
}
}
/* for(i=0;i<=5;i++) {
for(j=0;j<=5;j++) fout <<rmq[i][j]<<" ";
fout <<endl;
}
*/
for(i=1;i<=m;i++){
fin >>l>>r;
l--;
r--;
int k=int(log(r-l+1));
fout <<min(rmq[l][k],rmq[l+r-l+1-int(pow(2,k))][k])<<endl;
}
return 0;
}