社区讨论

昨晚 CF 1A,为什么挂了?

学术版参与者 2已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@lvn98frw
此快照首次捕获于
2024/05/01 11:25
2 年前
此快照最后确认于
2024/05/01 15:03
2 年前
查看原帖
感觉跟官解做法是一样的啊
已 define int long long,assert 也没有问题
CPP
constexpr int N = 2e5 + 5;
int n, k, a[N];
 
void mian() {
    cin >> n >> k;
    rep(i, 1, n) cin >> a[i];
    sort(a + 1, a + n + 1);
    int l = 0, r = 1e18;
    while(l < r) {
        int mid = (l + r + 1) >> 1;
        int res = 0;
        rep(i, 1, n) if(a[i] < mid) res += mid - a[i];
        if(res <= k) l = mid;
        else r = mid - 1;
    }
    rep(i, 1, n) if(a[i] < l) 
        k -= l - a[i], a[i] = l;
    int cnt = count(a + 1, a + n + 1, a[1]);
    assert(k >= 0 && k < cnt);
    assert(is_sorted(a + 1, a + n + 1));
    cnt -= k;
    cout << n * a[1] + n - cnt - n + 1 << endl;
    rep(i, 1, n) a[i] = 0;
}

回复

2 条回复,欢迎继续交流。

正在加载回复...