Pagini recente » Cod sursa (job #2648302) | Cod sursa (job #2893126) | Cod sursa (job #2532989) | Cod sursa (job #344546) | Cod sursa (job #2753598)
#include <bits/stdc++.h>
#define NMAX 100010
using namespace std;
ifstream fin("rmq.in");
ofstream gout("rmq.out");
int n,m, a, b, RMQ[30][NMAX];
unsigned long long puteri2[NMAX];
int main()
{
fin >> n >> m;
for (int i = 1 ; i <= n ; ++i)
{
fin >> a;
RMQ[0][i] = a;
}
puteri2[0] = 1;
for (int i = 1 ; i <= n ; ++i)
puteri2[i] = puteri2[i - 1] * 2;
for(int i = 1 ; puteri2[i] <= n ; ++i)
{
for(int j = 1 ; j + puteri2[i] - 1 <= n ; ++j)
RMQ[i][j] = min(RMQ[i - 1][j], RMQ[i - 1][j + puteri2[i - 1]]);
}
for(int i = 1 ; i <= m ; ++i)
{
fin >> a >> b;
int logaritm = int(log2(b - a));
int val = min(RMQ[logaritm][a], RMQ[logaritm][b - puteri2[logaritm] + 1]);
gout << val << '\n';
}
return 0;
}