Pagini recente » Cod sursa (job #727951) | Cod sursa (job #3128479) | Cod sursa (job #3185826) | Cod sursa (job #801650) | Cod sursa (job #2796283)
#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, logg;
fin >> st >> dr;
dist = dr-st+1;
logg = log2(dist);
fout << min(a[st][logg], a[dr- (1<<logg) + 1][logg]) << '\n';
}
return 0;
}