Pagini recente » Cod sursa (job #3156617) | Cod sursa (job #1849451) | Cod sursa (job #2870713) | Cod sursa (job #1532923) | Cod sursa (job #2796277)
#include <bits/stdc++.h>
using namespace std;
#define MAXN 100003
#define MAXLOGN 20
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int n, m, a[MAXN][MAXLOGN], v[MAXN];
int main(){
fin >> n >> m ;
for(int i=1; i<=n; i++)
{
fin >> v[i];
a[i][0] = v[i];
}
// preprocesare
for(int j=1; j<= MAXLOGN; j++)
for(int i=1; i<=n-(1<<j)+1; i++)
{
a[i][j] = min(a[i][j-1], a[i+1<<(j-1)][j-1]);
}
for(int i=1; i<=m; i++)
{
int st, dr, dist, log;
fin >> st >> dr;
dist = dr-st+1;
log = log2(dist);
fout << min(a[st][log], a[dr- (1<<log) + 1][log]) << '\n';
}
return 0;
}