| 比赛 |
2026.3.14 |
评测结果 |
AATTAAAAAAAAAATTTTTTTT |
| 题目名称 |
Circle of Cows |
最终得分 |
52 |
| 用户昵称 |
终焉折枝 |
运行时间 |
31.276 s |
| 代码语言 |
C++ |
内存使用 |
3.58 MiB |
| 提交时间 |
2026-03-14 12:55:27 |
显示代码纯文本
#include<iostream>
#include<algorithm>
using namespace std;
#define ll long long
#define ciallo(x) cerr << x << ' '
#define Ciallo(x) cerr << x << '\n'
const int MAXN = 2005;
int n;
ll c;
ll p[MAXN];
bool v[MAXN];
bool check_l(int s, int mid, int k){
int i = s, j = s + k, cnt = 0;
for(int x = s;x < s + n;x ++) v[x] = 0;
while(i < s + n && j < s + n && cnt < k){
if(v[i]){
i ++;
continue;
}
if(j < i + k) j = i + k;
if(j >= s + n) break;
if(v[j]){
j ++;
continue;
}
ll d1 = p[j] - p[i];
ll d2 = p[i] + c - p[j];
if(d1 < mid){
j ++;
}
else if(d2 < mid){
i ++;
}
else{
v[i] = v[j] = 1;
cnt ++;
i ++;
j ++;
}
}
return cnt >= k;
}
bool check(ll mid, int k){
for(int s = 0;s < n;s ++){
if(check_l(s, mid, k)) return true;
}
return false;
}
int main(){
freopen("Cows.in", "r", stdin);
freopen("Cows.out", "w", stdout);
cin.tie(0) -> ios::sync_with_stdio(0);
cin >> n >> c;
for(int i = 0;i < n;i ++){
cin >> p[i];
}
sort(p, p + n);
for(int i = 0;i < n;i ++){
p[i + n] = p[i] + c;
}
for(int k = 1;k <= n / 2;k ++){
ll l = 0, r = c / 2, ans = 0;
while(l <= r){
ll mid = (l + r) >> 1;
if(check(mid, k)){
ans = mid;
l = mid + 1;
}
else r = mid - 1;
}
cout << ans << ' ';
}
return 0;
}