이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
#pragma GCC optimize("O3")
typedef long long ll;
#define FOR(i,x,y) for(ll i=x; i<y; i++)
#define FORNEG(i,x,y) for(ll i=x; i>y; i--)
using namespace std;
ll dp[100001][200];
int main(){
ll n,k;
cin >> n >> k;
k += 1;
ll suff[n+1];
vector<ll> nums(n);
FOR(i,0,n) cin >> nums[i];
suff[n] = 0;
suff[n-1] = nums[n-1];
FORNEG(i,n-2,-1){
suff[i] = suff[i+1] + nums[i];
}
dp[0][0] = 0;
FOR(i,0,n){
FOR(j,0,k){
ll c = 1;
while (i+c<=n) dp[i+c][j+1] = max(dp[i+c][j+1], dp[i][j] + (suff[i] - suff[i+c])*suff[i+c]), c++;
dp[i+1][j] = max(dp[i+1][j], dp[i][j]);
}
}
cout << dp[n][k];
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |