Submission #1371045

#TimeUsernameProblemLanguageResultExecution timeMemory
1371045eradaxExponents (BOI25_exp)C++20
14 / 100
1096 ms1114112 KiB
#pragma GCC optimize("Ofast")
#include <bits/allocator.h>
// #pragma GCC target("avx2")
#include <bits/stdc++.h>
using namespace std;

#ifdef DBG
  #define dbg(expr)                                                          \
    cerr << "[" << __FUNCTION__ << ", " << __LINE__ << "] " << #expr << ": " \
         << expr << endl;
#else
  #define dbg(...)
#endif

ostream& operator<<(ostream& o, vector<int> v) {
  o << "{";
  for (auto i : v)
    o << i << ", ";
  o << "}";
  return o;
}

const int INF = 1e9;

const int V2 = 60;

int main() {
  cin.tie(0)->sync_with_stdio(0);

  int n, q;
  cin >> n >> q;

  vector<int> a(n);
  for (auto& i : a) {
    cin >> i;
  }

  vector<vector<int>> dp(n, vector<int>(n, INF));
  for (int i = 0; i < n; i++) {
    dp[i][i] = a[i];
  }

  for (int i = 0; i < n; i++) {
    dbg(i);
    dbg(dp[i]);
  }

  for (int len = 2; len <= n; len++) {
    for (int l = 0, r = len-1; r < n; l++, r++) {
      for (int m = l; m < r; m++) {
        dp[l][r] = min(dp[l][r], 1 + max(dp[l][m], dp[m+1][r]));
      }
    }
  }

  for (int i = 0; i < q; i++) {
    int l, r;
    cin >> l >> r;
    l--, r--;

    int ans = dp[l][r];

    cout << ans << '\n';
  }
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...