比赛 2026.3.14 评测结果 AAAAAAAAAAAAAAAAAAAAAA
题目名称 Circle of Cows 最终得分 100
用户昵称 xuyuqing 运行时间 7.559 s
代码语言 C++ 内存使用 3.87 MiB
提交时间 2026-03-14 11:41:15
显示代码纯文本

#include <algorithm>
#include <cstdio>
#include <iostream>

using namespace std;

const int N = 1145;

int n;
long long c;
long long nums[N * 2];
long long dp[N];

long long cal (int i, int j) {
    if (i > n) {
        i -= n;
    }
    if (j > n) {
        j -= n;
    }
    long long len = abs (nums[j] - nums[i]);
    len = min (len, c - len);
    return len;
}

int main () {

    freopen ("Cows.in", "r", stdin);
    freopen ("Cows.out", "w", stdout);

    // cin >> n >> c;
    scanf ("%d %d", &n, &c);
    for (int i = 1; i <= n; i++) {
        // cin >> nums[i];
        scanf ("%lld", &nums[i]);
        nums[i + n] = nums[i] + c;
    }

    for (int i = 1; i <= n; i++) {
        for (int j = i + 1; j <= n; j++) {
            int l = j + 1;
            int r = i + n - 1;
            int num = 1;
            long long lim = cal (i, j);

            for (int k = i + 1; k < j; k++) {
                if (l <= r) {
                    if (l <= r && cal (k, l) < lim) {
                        while (l < r && cal (k, l) < lim && cal (k, l + 1) > cal (k, l)) {
                            l++;
                        }
                    }
                    if (l <= r && cal (k, l) >= lim) {
                        num++;
                        l++;
                    }
                }
            }

            // cout << i << ' ' << j << ' ' << num << endl;
            dp[num] = max (dp[num], cal (i, j));
        }
    }

    for (int i = n / 2; i >= 1; i--) {
        dp[i] = max (dp[i], dp[i + 1]);
    }

    for (int i = 1; i <= n / 2; i++) {
        // cout << dp[i] << ' ';
        printf ("%d ", dp[i]);
    }
    
    return 0;
}