Pagini recente » Cod sursa (job #479922) | Cod sursa (job #817637) | Cod sursa (job #2549901) | Cod sursa (job #2724010) | Cod sursa (job #3124143)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int v[100002][100002],a[100001],n,m,L,R;
struct Query{
int L,R;
}q[1000001];
void preprocess(int arr[], int n)
{
for (int i = 1; i <= n; i++)
v[i][i] = i;
for (int i = 1; i <= n; i++) {
for (int j = i + 1; j <= n; j++)
if (arr[v[i][j - 1]] < arr[j])
v[i][j] = v[i][j - 1];
else
v[i][j] = j;
}
}
void RMQ(int arr[], int n, Query q[], int m)
{
preprocess(arr, n);
for (int i = 0; i < m; i++)
{
int L = q[i].L;
int R = q[i].R;
fout<< arr[v[L][R]] << endl;
}
}
int main()
{
fin>>n>>m;
for(int i = 1 ; i <= n ; i++)
{
fin>>a[i];
}
for(int i=0; i < m ; i++)
{
fin>>L>>R;
q[i]={L,R};
}
RMQ(a, n, q, m);
return 0;
}