Pagini recente » Cod sursa (job #562929) | Cod sursa (job #136524) | Cod sursa (job #1874817) | Cod sursa (job #1052441) | Cod sursa (job #2613424)
#include <bits/stdc++.h>
using namespace std;
ifstream f ("rmq.in");
ofstream g ("rmq.out");
int m[100005][20];
int v[100005];
int n,q;
int main()
{
f>>n>>q;
int log=log2(n);
int j=1;
for(int i=1; i<=n; i++)
{
f>>v[i];
m[i][1]=i;
}
j=2;
while(j<=log)
{
for(int i=1; i<=n-j+1; i++)
{
if(v[m[i][j-1]]<v[m[i+1][j-1]])
m[i][j]=m[i][j-1];
else
m[i][j]=m[i+1][j-1];
}
j++;
}
for(int i=1; i<=q; i++)
{
int x, y;
f>>x>>y;
int log=log2(y-x);
int t=pow(2, log);
g<<min(v[m[x][log+1]],v[m[y-t+1][log+1]])<<"\n";
}
return 0;
}