제출 #961056

#제출 시각아이디문제언어결과실행 시간메모리
961056Nurislam수열 (APIO14_sequence)C++17
0 / 100
2013 ms7256 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+=a[j]; 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'; vi v; while(k){ v.pb(ps+1); ps = pr[ps][k]; k--; }reverse(all(v)); for(auto i:v)cout << i << ' '; } main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int tt = 1; //cin >> tt; while (tt--) { solve(); } }

컴파일 시 표준 에러 (stderr) 메시지

sequence.cpp:63:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   63 | main(){
      | ^~~~
#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...