Submission #864267

#TimeUsernameProblemLanguageResultExecution timeMemory
864267vjudge1Financial Report (JOI21_financial)C++17
45 / 100
110 ms7080 KiB
#include <bits/stdc++.h> using namespace std; int main() { int n, d, i; cin >> n >> d; vector<int> v(n); for (i = 0; i < n; i++) cin >> v[i]; if (n < 401) { int j, k, m = 0; vector<vector<int> > dp(n); for (i = 0; i < n; i++) { dp[i].resize(i + 1); for (j = 0; j <= i; j++) { dp[i][j] = 0; if (j) { dp[i][j] = 1000000001; for (k = i - 1; k >= 0 && k >= i - d; k--) { if (j - 1 <= k && dp[k][j - 1] < v[i]) dp[i][j] = min(dp[i][j], dp[k][j - 1]); else if (j <= k) dp[i][j] = min(dp[i][j], dp[k][j]); } } dp[i][j] = max(dp[i][j], v[i]); if (i == n - 1 && dp[i][j] < 1000000001) m = j; } } cout << m + 1; } else if (d == n) { vector<int> li = {v[0]}; for (i = 1; i < n; i++) { int hi = li.size(), lo = -1, md; while (hi - lo > 1) { md = (hi + lo) / 2; if (li[md] < v[i]) lo = md; else hi = md; } if (hi < li.size()) li[hi] = v[i]; else li.push_back(v[i]); } cout << li.size(); } else if (d == 1) { v.push_back(1000000001); vector<int> ne(n + 1, n), st = {n}, ml(n + 1, 0); int m = 0; for (i = n - 1; i >= 0; i--) { while (v[i] >= v[st.back()]) st.pop_back(); ne[i] = st.back(); ml[i] = ml[ne[i]] + 1; m = max(m, ml[i]); st.push_back(i); } cout << m; } return 0; }

Compilation message (stderr)

Main.cpp: In function 'int main()':
Main.cpp:52:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   52 |             if (hi < li.size())
      |                 ~~~^~~~~~~~~~~
#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...