제출 #1280859

#제출 시각아이디문제언어결과실행 시간메모리
1280859am_aadvikFinancial Report (JOI21_financial)C++20
0 / 100
4093 ms20300 KiB
#include<iostream> #include<vector> #include<set> #include<algorithm> using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int n, d, ans = 0; cin >> n >> d; vector<int> a(n), dp(n, 1); for (auto& x : a) cin >> x; if (d == 1) { vector<int> nxt(n, -1); set<int> s; vector<pair<int, int>> arr(n); for (int i = 0; i < n; ++i) arr[i] = { a[i], i }; sort(arr.begin(), arr.end()); for (int i = 0; i < n; ++i) { auto it = s.lower_bound(i + 1); if (it != s.end()) nxt[arr[i].second] = (*it); s.insert(arr[i].second); } for (int i = n - 1; i >= 0; --i) dp[i] = ((nxt[i] == -1) ? 0 : dp[nxt[i]]) + 1; int mx = 0; for (auto x : dp) mx = max(x, mx); cout << mx << endl; } else { for (int i = n - 1; i >= 0; --i) { int ld = i + d; for (int j = i + 1; j <= min(n - 1, ld); ++j) { if (a[i] >= a[j]) ld = j + d; else dp[i] = max(dp[i], dp[j] + 1); } ans = max(ans, dp[i]); } cout << ans; } }
#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...