Pagini recente » Cod sursa (job #2112540) | Cod sursa (job #1640095) | Cod sursa (job #1284169) | Cod sursa (job #2044201) | Cod sursa (job #2209985)
#include <bits/stdc++.h>
using namespace std;
#define int long long
//#define fin cin
//#define fout cout
int a[100005],n,m,lg[100005];
int minim[18][100005];
signed main() {
ifstream fin("rmq.in");
ofstream fout("rmq.out");
fin >> n >> m;
for (int i = 1;i <= n;i++){
fin >> a[i];
minim[0][i] = a[i];
}
lg[1]=0;
for (int i = 2;i <= n;i++)
lg[i] = lg[i/2] + 1;
for (int i = 1;i <= lg[n];i++)
for (int j = 1;j <= n-(1 << i)+1;j++){
minim[i][j] = min(minim[i-1][j],minim[i-1][j+(1 << (i-1))]);
}
for (int i = 1;i <= m;i++){
int x,y;
cin >> x >> y;
int lung = y-x+1;
fout << min(minim[lg[lung]][x],minim[lg[lung]][y-(1 << lg[lung])+1]) << "\n";
}
}