Pagini recente » Cod sursa (job #1081755) | Cod sursa (job #2564478) | Cod sursa (job #158671) | Cod sursa (job #2132936) | Cod sursa (job #2761760)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
#define MAX 500
int lookup[MAX][MAX];
int n,m,x,y,a;
int v[100001];
struct Query {
int L, R;
};
void preprocess(int arr[], int n)
{
for (int i = 0; i < n; i++)
lookup[i][i] = i;
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++)
if (arr[lookup[i][j - 1]] < arr[j])
lookup[i][j] = lookup[i][j - 1];
else
lookup[i][j] = j;
}
}
void RMQ(int arr[], int n, int x, int y)
{
preprocess(arr, n);
int L = x;
int R = y;
fout << arr[lookup[L][R]] << endl;
}
int main()
{
fin >> n >> m;
for(int i=1; i <= n; i++)
fin >> v[i];
for(int i=1; i<=m;i++)
{
fin >> x >> y;
RMQ(v,n,x,y);
}
return 0;
}