Pagini recente » Cod sursa (job #296574) | Cod sursa (job #180557) | Cod sursa (job #1995041) | Cod sursa (job #2896376) | Cod sursa (job #2857299)
#include <bits/stdc++.h>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int rmq[100005][18];
int n,m,x,y,k;
void read() {
f >> n >> m;
for (int i=1;i<=n;i++) {
f >> rmq[i][0];
}
}
int query() {
k=0;
while ((1<<(k+1))<=(y-x+1)) k++;
return min(rmq[x][k],rmq[y-(1<<k)+1][k]);
}
void solve() {
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]);
}
}
for (int i=1;i<=m;i++) {
f >> x >> y;
g << query() << '\n';
}
}
int main()
{
read();
solve();
return 0;
}