Pagini recente » Cod sursa (job #2744988) | Cod sursa (job #3190258) | Cod sursa (job #2778984) | Cod sursa (job #2111921) | Cod sursa (job #2999263)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int n, m, r[18][100002], lg[100002], a[100002];
void citire_sir() {
fin>>n>>m;
for (int i=1; i<=n; i++)
fin>>a[i];
}
void rmq() {
lg[1]=0;
for (int i=2; i<=n; i++)
lg[i]=lg[i/2]+1;
for (int i=1; i<=n; i++)
r[0][i]=a[i];
for (int i=1; (1<<i)<=n; i++)
for (int j=1; j<=n-(1<<i)+1; j++) {
int l=1<<(i-1);
r[i][j]=min(r[i-1][j], r[i-1][j+l]);
}
}
void queries() {
int x, y;
for (int i=1; i<=m; i++) {
fin>>x>>y;
int diff=y-x+1, l=lg[diff], sh=diff-(1<<l);
fout<<min(r[l][x], r[l][x+sh])<<"\n";
}
}
int main() {
citire_sir();
rmq();
queries();
return 0;
}