제출 #961086

#제출 시각아이디문제언어결과실행 시간메모리
961086Nurislam수열 (APIO14_sequence)C++17
39 / 100
2061 ms31836 KiB
///* __ __ __ */ ///* ====== _ /| /| __ _ / | | /| | * | | | | / /| |\ | / | | * | / */ ///* \- || |_| |_ / |/ | | | |_ |- | |--| /-| | | \ \ |==| |- /=| | \ | | |--| | |- */ ///* || | | |_ / | |__| _| |_ \__ | | / | |__ | __| | | | \ / | | \| \__ | | | | \ */ ///* // autor :: Rick Prime #pragma GCC optimize("O3") #include <bits/stdc++.h> using namespace std; #define pb push_back #define ff first #define ss second #define all(x) x.begin(),x.end() #define rall(x) x.rbegin(),x.rend() #define int long long typedef vector<int> vi; typedef vector<double> vd; typedef pair<int,int> pii; typedef vector<pii> vii; const int N = 2e5+50, inf = 1e18, mod = 1e9+7; void solve(){ int n, k; cin >> n >> k; int dp[n][k+1]; memset(dp, 0, sizeof(dp)); int a[n]; for(int &i:a)cin >> i; int sf[n+1]{}; for(int i = n-1; i >= 0; i--){ sf[i] = a[i]+sf[i+1]; } int pr[n][k]; int ans = 0, ps = 0; for(int i = 0; i < n; i++){ int sm = 0; for(int j = i-1; j >= 0; j--){ sm = sf[j]-sf[i]; for(int x = 0; x < k; x++){ //dp[j][x] + sm*sf[i] //dp[i][x+1] if(dp[i][x+1] < dp[j][x] + sm*sf[i]){ pr[i][x+1] = j; dp[i][x+1] = dp[j][x] + sm*sf[i]; } } } if(dp[i][k] >= ans){ ps = i; ans = dp[i][k]; } } cout << ans << '\n'; //for(int i = 0; i <= k; i++){ //for(int j = 0; j < n; j++){ //cout << dp[j][i] << ' '; //}cout << '\n'; //} vi v; while(k){ v.pb(ps); ps = pr[ps][k--]; }reverse(all(v)); for(auto i:v)cout << i << ' '; cout << '\n'; } signed main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int tt = 1; //cin >> tt; while (tt--) { solve(); } }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...