Cod sursa(job #2882536)

Utilizator AndreiV03Andrei Voicu AndreiV03 Data 31 martie 2022 15:30:23
Problema Range minimum query Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.61 kb
#include <fstream>
using namespace std;

#define NMAX 100001

ifstream cin("rmq.in");
ofstream cout("rmq.out");

int n, m;
int v[NMAX];
int rmq[NMAX][NMAX];

void init() {
  for (int i = 1; i <= n; ++i)
    rmq[i][i] = i;
    
  for (int i = 1; i <= n; ++i)
    for (int j = i + 1; j <= n; ++j)
      if (v[rmq[i][j - 1]] < v[j])
        rmq[i][j] = rmq[i][j - 1];
      else rmq[i][j] = j;
}

int main() {
  cin >> n >> m;
  for (int i = 1; i <= n; ++i)
    cin >> v[i];
  
  init();
  
  for (int i = 1, a, b; i <= m; ++i) {
    cin >> a >> b;
    cout << rmq[a][b] << "\n";
  }
  
  cin.close();
  cout.close();
  return 0;
}