Pagini recente » Cod sursa (job #2951147) | Cod sursa (job #1278402) | Cod sursa (job #2823830) | Cod sursa (job #2811164) | Cod sursa (job #3260589)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
const int NMAX = 2*100000;
const int LG = 17;
int n, q; int st, dr;
int v[NMAX+1];
int RMQ[NMAX+1][LG];
int calcLog[NMAX+1];
int main()
{
fin >> n >> q;
for(int i=1; i<=n; i++)
fin >> v[i], RMQ[i][0] = v[i];
for(int lg=1; lg<=LG; lg++)
{
for(int i=1; i+(1<<lg)<=n*2; i++)
{
RMQ[i][lg] = min(RMQ[i][lg-1],RMQ[i+(1<<(lg-1))][lg-1]);
}
}
for(int i=2; i<=n; i++)
calcLog[i] = calcLog[i/2]+1;
while(q--)
{
fin >> st >> dr;
int lg = calcLog[dr-st+1];
fout << min(RMQ[st][lg], RMQ[1+dr-(1<<lg)][lg]) << '\n';
}
return 0;
}