Submission #1194424

#TimeUsernameProblemLanguageResultExecution timeMemory
1194424lopkusFinancial Report (JOI21_financial)C++20
48 / 100
4096 ms9904 KiB
#include <bits/stdc++.h> #define int int64_t 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]; } std::vector<int> compres; for(int i = 1; i <= n; i++) { compres.push_back(a[i]); } std::sort(compres.begin(), compres.end()); for(int i = 1; i <= n; i++) { a[i] = lower_bound(compres.begin(), compres.end(), a[i]) - compres.begin() + 1; } std::vector<int> dp(n + 1, 1); std::vector<int> c(n + 1, 0); for(int i = 1; i <= n; i++) { int prv = i; for(int j = i - 1; j >= 1; j--) { if(prv - j > d) { c[i] = j; break; } if(a[j] <= a[i]) { prv = j; } } c[i] += 1; } for(int i = 1; i <= n; i++) { for(int j = i + 1; j <= n; j++) { if(c[j] <= i && a[j] > a[i]) { dp[j] = std::max(dp[j], dp[i] + 1); } } } std::cout << *max_element(dp.begin() + 1, dp.end()); } signed 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...