제출 #1171495

#제출 시각아이디문제언어결과실행 시간메모리
1171495AlgorithmWarriorBigger segments (IZhO19_segments)C++20
37 / 100
1594 ms2168 KiB
#include <bits/stdc++.h>

using namespace std;

int const MAX=5e5+5;
int n;
int v[MAX];
long long sp[MAX];
struct sol{
    int cnt,ind;
    bool operator<(sol ot){
        if(cnt!=ot.cnt)
            return cnt<ot.cnt;
        return ind<ot.ind;
    }
}dp[MAX];

void read(){
    cin>>n;
    int i;
    for(i=1;i<=n;++i){
        cin>>v[i];
        sp[i]=sp[i-1]+v[i];
    }
}

long long get_sp(int l,int r){
    return sp[r]-sp[l-1];
}

int get_dp(){
    int i,j;
    for(i=1;i<=n;++i){
        dp[i]={1,0};
        for(j=1;j<i;++j)
            if(get_sp(dp[j].ind+1,j)<=get_sp(j+1,i)){
                sol cand={dp[j].cnt+1,j};
                if(dp[i]<cand)
                    dp[i]=cand;
            }
    }
    return dp[n].cnt;
}

int main()
{
    read();
    cout<<get_dp();
    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...