Submission #336870

#TimeUsernameProblemLanguageResultExecution timeMemory
336870boykutBigger segments (IZhO19_segments)C++14
27 / 100
1577 ms17964 KiB
#include <bits/stdc++.h> using namespace std; #define linl long long int main(){ ios_base::sync_with_stdio(0); cin.tie(0); int n; cin >> n; vector < int > a(n); for (int & to : a) { cin >> to; } int max = 0; if (n <= 3000) { set < pair < int64_t, int > > dp[n]; vector < int64_t > prefsum(n); auto get = [&] (int left, int right) -> int64_t { return prefsum[right] - (left == 0 ? 0ll : prefsum[left - 1]); }; for (int i = 0; i < n; i++) { prefsum[i] = a[i]; if (i) prefsum[i] += prefsum[i - 1]; } for (int i = 0; i < n; i++) { dp[i].insert(make_pair(get(0, i), 1)); } for (int i = 0; i < n; i++) { for (int j = 1; j <= i; j++) { int mx = -1; for (auto it : dp[j - 1]) { if (it.first <= get(j, i)) { if (mx == -1 || it.second > mx) mx = it.second; } } if (mx == -1) continue; dp[i].insert(make_pair(get(j, i), mx + 1)); } } int mx = 0; for (auto it : dp[n - 1]) { if (it.second > mx) mx = it.second; } cout << mx << '\n'; } return 0; }

Compilation message (stderr)

segments.cpp: In function 'int main()':
segments.cpp:18:7: warning: unused variable 'max' [-Wunused-variable]
   18 |   int max = 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...