Submission #1271931

#TimeUsernameProblemLanguageResultExecution timeMemory
1271931rtriThe short shank; Redemption (BOI21_prison)C++20
0 / 100
1 ms404 KiB
#include <bits/stdc++.h>
using namespace std;

int n, d, t;
vector<int> times;

vector<vector<vector<int>>> memo;
int dp(int idx, int riots, int matress) {
  if (memo[idx][riots][matress] != -1)
    return memo[idx][riots][matress];

  int ans = 2e9;

  if (0 < riots)
    ans = min(ans, max(dp(idx - 1, riots - 1, matress), times[idx]));
  if (0 < matress)
    ans = min(ans, max(dp(idx - 1, riots - 1, matress - 1), times[idx]));

  return ans;
}

int main() {
  cin >> n >> d >> t;

  times.resize(n);
  for (int i = 0; i < n; i++)
    cin >> times[i];

  memo.resize(n, vector<vector<int>>(n + 1, vector<int>(n, -1)));
  int ans = -1;
  for (int answer = 0; answer <= n; answer++)
    if (dp(n, answer, d) <= t) {
      ans = answer;
      break;
    }

  cout << ans << endl;

  return 0;
}

#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...