제출 #344559

#제출 시각아이디문제언어결과실행 시간메모리
344559kekWwBigger segments (IZhO19_segments)C++17
37 / 100
1543 ms2412 KiB
#include <iostream> #include <vector> #include <algorithm> #include <ctime> #include <cmath> #include <map> #include <unordered_set> #include <tuple> #include <queue> #include <set> #include <cstring> #include <functional> #include <random> #include <chrono> #include <cassert> #include <iomanip> // #include <ext/pb_ds/assoc_container.hpp> #define ar array #define all(arr) (arr).begin(), (arr).end() #define range(i, n) for (int i=0; i < (n); ++i) #define rall(arr) (arr).rbegin(), (arr).rend() typedef long long ll; typedef long double ld; typedef unsigned long long ull; using namespace std; // using namespace __gnu_pbds; /* typedef tree< int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> ordered_set; */ const ll INF = 1e18; const int INFi = 2e9; const int maxN = 5e5 + 5; const int md2 = 998244353; const int md3 = 1e9 + 7; double getTime() { return clock() / (double) CLOCKS_PER_SEC; } void solve() { int n; cin >> n; vector<int> a(n + 1); range(i, n) cin >> a[i]; vector<ll> dp1(n + 1), dp2(n + 1); dp1[0] = dp2[0] = 0; for(int i = 1; i <= n; ++i) { ll cur = 0; for(int j = i - 1; j >= 0; --j) { cur += a[j]; if (cur >= dp2[j]) { if (dp1[j] + 1 > dp1[i]) { dp1[i] = dp1[j] + 1; dp2[i] = cur; } else if (dp1[j] + 1 == dp1[i] && dp2[i] > cur) { dp2[i] = cur; } } } } cout << dp1[n]; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); // cout << setprecision(15) << fixed; int tests = 1; // cin >> tests; range(_, tests) { solve(); } return 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...