제출 #1336190

#제출 시각아이디문제언어결과실행 시간메모리
1336190AndreyBigger segments (IZhO19_segments)C++20
100 / 100
100 ms43340 KiB
#include<bits/stdc++.h>
using namespace std;

vector<long long> pr(500001);
vector<long long> upd[500002];
long long n;

long long dude(long long x) {
    long long l = 0,r = n;
    while(l < r) {
        long long mid = (l+r+1)/2;
        if(pr[mid] < x) {
            l = mid;
        }
        else {
            r = mid-1;
        }
    }
    return l;
}

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    cin >> n;
    vector<long long> haha(n+1);
    for(long long i = 1; i <= n; i++) {
        cin >> haha[i];
        pr[i] = pr[i-1]+haha[i];
    }
    vector<pair<long long,long long>> dp(n+1);
    long long y = 0;
    for(long long i = 1; i <= n; i++) {
        for(long long v: upd[i]) {
            y = max(y,v);
        }
        dp[i] = {1+dp[y].first,pr[i]-pr[y]};
        upd[dude(pr[i]+pr[i]-pr[y])+1].push_back(i);
    }
    cout << dp[n].first;
    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...