Pagini recente » Cod sursa (job #2734936) | Cod sursa (job #2780667) | Cod sursa (job #229335) | Cod sursa (job #518286) | Cod sursa (job #2512601)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
#define cin fin
#define cout fout
/*
*/
const int NMAX=1e5+10;
const int MMAX=1e6+10;
int n, m, x, y, k, v[NMAX];
int rmq[NMAX][100];
pair<int, int> q[MMAX];
void read()
{
cin>>n>>m;
for(int i=1; i<=n; i++)
cin>>v[i];
for(int i=1; i<=m; i++)
cin>>q[i].first>>q[i].second;
}
void preprocessing()
{
for(int i=1; i<=n; i++)
rmq[i][0]=v[i];
for(int j=1; (1<<j)<=n; j++)
for(int i=1; i+(1<<j)-1<=n; i++)
rmq[i][j]=min(rmq[i][j-1], rmq[i+(1<<(j-1))][j-1]);
}
void afis()
{
cout<<" ";
for(int i=1; i<=5; i++)
cout<<i<<" ";
cout<<"\n";
for(int j=0; (1<<j)<=n; j++)
{
cout<<j<<": ";
for(int i=1; i+(1<<j)-1<=n; i++)
cout<<rmq[i][j]<<" ";//<<rmq[i][j-1]<<" "<<rmq[i+(1<<(j-1))][j-1]<<",,";
cout<<"\n";
}
}
void solve()
{
preprocessing();
//afis();
for(int i=1; i<=m; i++)
{
x=q[i].first;
y=q[i].second;
k=floor(log2(y-x+1));
cout<<min(rmq[x][k], rmq[y-(1<<k)+1][k])<<"\n";
}
}
int main()
{
read();
solve();
return 0;
}