Submission #176016

#TimeUsernameProblemLanguageResultExecution timeMemory
176016istleminBigger segments (IZhO19_segments)C++14
0 / 100
2 ms504 KiB
#include <bits/stdc++.h> #pragma GCC optimize("Ofast") using namespace std; #define rep(i, a, b) for(ll i = a; i < ll(b); ++i) #define trav(a, x) for(auto& a : x) #define all(x) x.begin(), x.end() #define sz(x) (ll)(x).size() typedef long long ll; typedef pair<ll, ll> pii; typedef vector<ll> vi; int main() { //cin.sync_with_stdio(0); cin.tie(0); //cin.exceptions(cin.failbit); ll n; cin>>n; vi a(n); rep(i,0,n) cin>>a[i]; vector<vi> dp(n,vi(n+1,-10)); rep(i,0,n+1) dp[0][i] = 0; rep(i,1,n){ ll sum = 0; rep(j,i,n){ sum += a[j]; ll sum2 = 0; for(ll k = i-1;k>=0;k--){ sum2 += a[k]; if(sum2>sum) break; dp[i][j] = max(dp[i][j],dp[k][i-1]+1); } } } /* rep(i,0,n) { rep(j,0,n) { printf("%3d ",dp[i][j]); } printf("\n"); }*/ rep(i,0,n) { rep(j,0,n) { if(j<n-1 && dp[i][j]>=0 && dp[i][j+1]>=0){ assert(dp[i][j]==dp[i][j+1]); /*if(dp[i][j]!=dp[i][j+1]){ cout<<"("<<i<<","<<j<<"): "<<dp[i][j]<<endl; cout<<"("<<i<<","<<j+1<<"): "<<dp[i][j+1]<<endl; }*/ } } } ll ans = 0; rep(i,0,n) ans = max(ans,dp[i][n-1]); cout<<ans+1<<endl; }
#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...