154862025-02-19 21:32:20TakacsAndrasBájital (80 pont)cpp17Hibás válasz 8/80101ms2796 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long
signed main() {
    int n,x; cin >> n >> x;
    vector<int> a(n);
    for (int &x : a) cin >> x;
    sort(a.begin(), a.end());
    vector<pair<int,int>> pr(n+1);
    for (int i = n-1; i >= 0; i--) pr[i] = {pr[i+1].first+a[i]/x,pr[i+1].second+a[i]%x};
    int l = 0, h = 1e15;
    while (l+1 < h) {
        int m = (l+h)/2, sum = pr[0].second, cnt = 0;
        for (int i = 0; i < n; i++) {
            if (sum < m) {
                sum -= a[i]%x;
                sum += a[i];
            }
            else if (sum+a[i] >= m) {
                cnt = pr[i+1].first+(m-sum > 0 ? (a[i]-(m-sum))/x : 0);
                //cout << i << ' ' << m << ' ' << l << ' ' << h << ' ' << sum << ' ' << cnt << '\n';
                if (cnt >= m) break;
                else cnt = 0;
            }
        }
        if (cnt == 0) h = m;
        else l = m;
    }
    cout << l;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base8/80
1Elfogadva0/01ms316 KiB
2Hibás válasz0/01ms316 KiB
3Hibás válasz0/21ms316 KiB
4Hibás válasz0/21ms508 KiB
5Hibás válasz0/21ms316 KiB
6Hibás válasz0/22ms316 KiB
7Hibás válasz0/43ms316 KiB
8Hibás válasz0/43ms508 KiB
9Hibás válasz0/2101ms2728 KiB
10Hibás válasz0/286ms2736 KiB
11Hibás válasz0/282ms2728 KiB
12Hibás válasz0/281ms2612 KiB
13Hibás válasz0/290ms2740 KiB
14Hibás válasz0/287ms2616 KiB
15Hibás válasz0/286ms2732 KiB
16Hibás válasz0/285ms2732 KiB
17Hibás válasz0/286ms2728 KiB
18Hibás válasz0/286ms2612 KiB
19Hibás válasz0/281ms2796 KiB
20Hibás válasz0/281ms2620 KiB
21Hibás válasz0/279ms2604 KiB
22Hibás válasz0/279ms2616 KiB
23Hibás válasz0/41ms316 KiB
24Hibás válasz0/41ms316 KiB
25Hibás válasz0/41ms316 KiB
26Elfogadva4/471ms2736 KiB
27Hibás válasz0/478ms2736 KiB
28Hibás válasz0/475ms2612 KiB
29Hibás válasz0/475ms2764 KiB
30Elfogadva2/274ms2760 KiB
31Elfogadva2/275ms2728 KiB
32Hibás válasz0/296ms2616 KiB
33Hibás válasz0/293ms2740 KiB