제출 #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...