Pagini recente » Cod sursa (job #2944921) | Cod sursa (job #3178803) | Cod sursa (job #1199089) | Cod sursa (job #434616) | Cod sursa (job #2796280)
#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;
}