Submission #678424

#TimeUsernameProblemLanguageResultExecution timeMemory
678424YENGOYANBigger segments (IZhO19_segments)C++17
0 / 100
1 ms212 KiB
/* //\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\\ \\ // // 271828___182845__904523__53602__ \\ \\ 87___47____13______52____66__24_ // // 97___75____72______47____09___36 \\ \\ 999595_____74______96____69___67 // // 62___77____24______07____66__30_ \\ \\ 35___35____47______59____45713__ // // \\ \\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\// */ #include <iostream> #include <vector> #include <set> #include <map> #include <unordered_map> #include <unordered_map> #include <cmath> #include <climits> #include <algorithm> #include <random> #include <queue> #include <deque> #include <iomanip> #include <string> #include <tuple> #include <bitset> #include <chrono> #include <ctime> #include <fstream> #include <stack> #include <cstdio> using namespace std; using ll = long long; const int N = 3e5 + 5; const ll mod = 1e9 + 7, inf = 1e12; void solve() { int n; cin >> n; vector<ll> v(n), pref(n + 1); for (int i = 0; i < n; ++i) { cin >> v[i]; pref[i + 1] = pref[i] + v[i]; } vector<pair<ll, ll>> dp(n + 1, {0, 0}); //for (int l = 1; l <= n; ++l) { dp[1] = { 1, -v[0] }; for (int r = 1; r <= n; ++r) { dp[r] = max(dp[r], { dp[r - 1].first, -(-dp[r - 1].second + v[r - 1]) }); ll cnt = dp[r].first, sm = -dp[r].second; ll req = pref[r] + sm; int id = lower_bound(pref.begin(), pref.end(), req) - pref.begin(); if (id > n) continue; if(id >= r) dp[id] = max(dp[id], { cnt + 1, -(pref[id] - sm) }); } //} std::cout << dp[n].first << "\n"; } int main() { ios_base::sync_with_stdio(0); cin.tie(NULL); //int t; cin >> t; //while (t--) solve(); }
#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...