您的位置:首页 > 其它

URAL 1648 Yachts

2014-09-27 18:43 204 查看
题目链接:点击打开链接

#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
typedef long long ll;

const int N = 20000+10;
ll a
;

int main() {
    int n;
    ll d, sum, ans;
    while (~scanf("%d%I64d", &n, &d)) {
        for (int i = 1; i <= n; ++i)
            scanf("%I64d", &a[i]);
        sum = 0;
        for (int i = 1; i <= n; ++i) {
            sum += a[i];
            if (sum > d * i) {
                a[i] = d * i - (sum - a[i]);
                sum = d * i;
            }
        }
        printf("%I64d ", sum);
        ans = sum = 0;
        if (a
 > d)
            ans = sum = a
 - d;

        for (int i = n - 1; i >= 1; --i) {
            if (a[i] <= d) {
                sum -= d - a[i];
                if (sum < 0)
                    sum = 0;
                ans += sum;
            } else {
                a[i] -= d;
                sum += a[i];
                ans += sum;
            }
        }
        printf("%I64d\n", ans);
    }
    return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: