Codeforces Round #600 (Div. 2) C - Sweets Eating

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std ;
typedef long long ll;
const int MAXN = 2e5+5;
ll arr[MAXN],dp[MAXN];
int main() {
    ll n,m,sum=0;
    cin >> n >> m;
    for(int i=1; i<=n; i++) cin >> arr[i];
    sort(arr+1,arr+n+1);
    for(int i=1; i<=n; i++) {
        sum+=arr[i];
        if(i<m) dp[i]=sum;
        else dp[i]=dp[i-m]+sum;
        cout << dp[i] << " ";
    }
    return 0;
}
//dp[1]=a[1]=sum[1]
//dp[2]=a[1]+a[2]=sum[2]
//dp[3]=a[3]+a[2]+a[1]*2=dp[2]+a[3]+a[1]=dp[1]+sum[3]
//dp[4]=a[4]+a[3]+a[2]*2+a[1]*2=dp[3]+a[4]+a[2]=dp[2]+sum[4]
//dp[5]=a[5]+a[4]+a[3]*2+a[2]*2+a[1]*3=dp[4]+a[5]+a[3]+a[1]=dp[3]+sum[5]

猜你喜欢

转载自www.cnblogs.com/QingyuYYYYY/p/11923957.html