제출 #863049

#제출 시각아이디문제언어결과실행 시간메모리
863049LePhiPhatBigger segments (IZhO19_segments)C++17
37 / 100
242 ms262144 KiB
// https://codeforces.com/blog/entry/64479?#comment-484350 #include <iostream> #include <cstdint> #include <string> #include <vector> using namespace std; #ifdef DEBUG #include "debuge.cpp" #else #define debug(...) 42 #endif typedef long long ll; typedef pair<int, int> pii; typedef pair<ll, ll> pll; typedef pair<double, double> pdd; typedef vector<int> vi; typedef vector<ll> vll; typedef vector<pii> vii; #define fi first #define se second #define all(v) (v).begin(), (v).end() #define SZ(x) ((int) (x).size()) #define pb push_back #define pf push_front #define lb lower_bound #define ub upper_bound #define FOR(i, a, b) for (int i = (a); i < (b); ++i) #define ROF(i, a, b) for (int i = (a); i > (b); --i) void LPP(int &test) { int n; cin >> n; vll a(n + 1), p(n + 1); vector<vi> dp(n + 1, vi(n + 1, -1)); for (int i = 1; i <= n; i++) cin >> a[i]; for (int i = 1; i <= n; i++) p[i] = p[i - 1] + a[i]; dp[0][0] = 0; // subtask 3 for (int i = 1; i <= n; i++) dp[i][1] = 1; for (int j = 1; j < n; j++) { for (int i = 1; i <= n; i++) if (dp[i][j] != -1) { int l = dp[i][j] - 1; int r = i; debug(i, j, l, r, dp[i][j]); if (p[r] - p[l] > p[n] - p[r]) continue; int lo = i, hi = n + 1; while (lo + 1 < hi) { int mi = (lo + hi) / 2; if (p[mi] - p[i] >= p[i] - p[l]) { hi = mi; } else { lo = mi; } } dp[hi][j + 1] = max(dp[hi][j + 1], i + 1); } for (int i = 1; i <= n; i++) dp[i][j + 1] = max(dp[i - 1][j + 1], dp[i][j + 1]); } int ans = 1; FOR(j, 0, n + 1) { if (dp[n][j] != -1) ans = max(ans, j); } cout << ans; } int32_t main() { cin.tie(0) -> ios::sync_with_stdio(false); int tc = 1; // cin >> tc; for (int i = 1; i <= tc; i++) LPP(i); } /* #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace __gnu_pbds; #define ordered_set tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> */

컴파일 시 표준 에러 (stderr) 메시지

segments.cpp: In function 'void LPP(int&)':
segments.cpp:12:20: warning: statement has no effect [-Wunused-value]
   12 | #define debug(...) 42
      |                    ^~
segments.cpp:50:4: note: in expansion of macro 'debug'
   50 |    debug(i, j, l, r, dp[i][j]);
      |    ^~~~~
#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...