Submission #707770

#TimeUsernameProblemLanguageResultExecution timeMemory
707770penguin133Bigger segments (IZhO19_segments)C++17
0 / 100
0 ms340 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define pi pair<int, int> #define pii pair<int, pi> #define fi first #define se second #ifdef _WIN32 #define getchar_unlocked _getchar_nolock #endif mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count()); int n, A[500005], P[500005]; pi dp[3005]; struct node{ int s, e, m; node *l, *r; pi val; node(int _s, int _e){ s = _s, e = _e, m = (s + e) >> 1; val = {-1e18, -1e18}; l = r = nullptr; } void mc(){ if(l != nullptr)return; if(s == e)return; l = new node(s, m); r = new node(m+1, e); } void upd(int a, pi b){ if(s == e) val = max(val, b); else{ mc(); if(a <= m)l->upd(a, b); else r->upd(a, b); val = max(l->val, r->val); } } pi qry(int a, int b){ if(s == a && b == e)return val; if(l == nullptr)return val; if(b <= m)return l->qry(a, b); else if(a > m)return r->qry(a, b); else return max(l->qry(a, m), r->qry(m+1, b)); } }*root; void solve(){ root = new node(0, 1e15); cin >> n; for(int i=1;i<=n;i++)cin >> A[i], P[i] = P[i-1] + A[i]; root->upd(0, {0, 0}); for(int i=1;i<=n;i++){ dp[i] = {-1e18, -1e18}; dp[i] = root->qry(0, P[i] - 1); dp[i].fi++; dp[i].se -= P[i]; root->upd(P[i] - dp[i].se, {dp[i].fi, P[i]}); /* for(int j = i - 1; j >= 0; j--){ if(-dp[j].se <= P[i] - P[j])dp[i] = max(dp[i], {dp[j].fi + 1, P[j] - P[i]}); } */ } cout << dp[n].fi; } main(){ ios::sync_with_stdio(0);cin.tie(0); int tc = 1; //cin >> tc; for(int tc1=1;tc1<=tc;tc1++){ // cout << "Case #" << tc1 << ": "; solve(); } }

Compilation message (stderr)

segments.cpp:76:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   76 | main(){
      | ^~~~
#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...