Submission #1192407

#TimeUsernameProblemLanguageResultExecution timeMemory
1192407lopkusFinancial Report (JOI21_financial)C++20
28 / 100
4101 ms1114112 KiB
#include <bits/stdc++.h>

void solve() {
  int n, d;
  std::cin >> n >> d;
  std::vector<int> a(n + 1);
  for(int i = 1; i <= n; i++) {
    std::cin >> a[i];
  }
  // a[i] <= n
  std::vector<int> compres;
  for(int i = 1; i <= n; i++) {
    compres.push_back(a[i]);
  }
  sort(compres.begin(), compres.end());
  compres.erase(unique(compres.begin(), compres.end()), compres.end());
  for(int i = 1; i <= n; i++) {
    a[i] = lower_bound(compres.begin(), compres.end(), a[i]) - compres.begin() + 1;
  }
  std::vector<std::vector<int>> dp(n + 1, std::vector<int>(n + 1));
  for(int i = 1; i <= n; i++) {
    for(int j = i - 1; j >= std::max(0, i - d); j--) {
      for(int val = 0; val <= n; val++) {
        if(a[i] > val) {
          dp[i][a[i]] = std::max(dp[i][a[i]], dp[j][val] + 1);
        }
        else {
          dp[i][val] = std::max(dp[i][val], dp[j][val]);
        }
      }
    }
  }
  std::cout << *max_element(dp[n].begin(), dp[n].end());
}


int main() {
  std::ios::sync_with_stdio(false);
  std::cin.tie(nullptr);

  int t = 1;
  //std::cin >> t;
  while (t--) {
      solve();
  }

  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...