Pagini recente » Cod sursa (job #2337068) | Cod sursa (job #1082) | Cod sursa (job #1632661) | Cod sursa (job #1105323) | Cod sursa (job #2106804)
#include <bits/stdc++.h>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int n,m,a[100005],lookup[100005][20];
int main()
{
f>>n>>m;
for(int i=0;i<n;++i)
f>>a[i];
for(int i=0;i<n;++i)
lookup[i][0] = i;
for(int j=1;(1<<j)<=n;++j)
for(int i=0; (i+ (1<<j)-1)<n;++i)
if(a[lookup[i][j-1]]<a[lookup[i+(1<<(j-1))][j-1]])
lookup[i][j]=lookup[i][j-1];
else
lookup[i][j]=lookup[i+(1<<(j-1))][j-1];
for(int i=1;i<=m;++i)
{
int R,L;
f>>L>>R;
R--;
L--;
int j= (int)log2(R-L+1);
g<<min(a[lookup[L][j]],a[lookup[R-(1<<j)+1][j]])<<'\n';
}
return 0;
}