39192023-03-05 15:33:59zsomborHázszámokcpp17Wrong answer 25/1003ms5444 KiB
#include <iostream>
#include <vector>
using namespace std;
using ll = long long;

ll k, n = 0;
vector <ll> h(51, 1);
vector <ll> CNT(10, 0);
vector <ll> cnt(10, 0);
vector <ll> v(51, 0);

bool check(ll x) {
    fill(cnt.begin(), cnt.end(), 0);
    fill(v.begin(), v.end(), 0);
    for (int i = 1; i <= n; i++) {
        if (x < h[i]-1) {
            cnt[0] += ((x + 1) % h[i - 1]) * i;
            break;
        }
        cnt[0] += (k - 1) * h[i - 1] * i;
    }
    for (int i = n; i >= 0; i--) {
        v[i] = x / h[i];
        x %= h[i];
        if (v[i]) cnt[v[i]] += x + 1;
        for (int j = 1; j < v[i]; j++) cnt[j] += h[i];
        for (int j = 1; j < k; j++) cnt[j] += h[i] * i / k * v[i];
    }
    for (int i = 1; i < k; i++) cnt[0] -= cnt[i];
    for (int i = 0; i < k; i++) if (cnt[i] > CNT[i]) return false;
    return true;
}

int main()
{
    cin >> k;
    while (h[n] < 1e15) { n++; h[n] = k * h[n - 1]; }
    for (int i = 0; i < k; i++) cin >> CNT[i];
    ll l = 0, r = 1e15, m;
    while (r - l > 1) {
        m = (l + r) / 2;
        (check(m) ? l = m : r = m);
    }
    cout << l;
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted3ms1876 KiB
2Accepted3ms2120 KiB
3Accepted3ms2364 KiB
subtask20/25
4Accepted3ms2416 KiB
5Accepted3ms2656 KiB
6Accepted3ms2708 KiB
7Accepted3ms2952 KiB
8Accepted3ms3128 KiB
9Accepted3ms3244 KiB
10Accepted3ms3336 KiB
11Accepted3ms3336 KiB
12Accepted3ms3344 KiB
13Accepted3ms3340 KiB
14Accepted3ms3432 KiB
15Wrong answer3ms3424 KiB
16Accepted3ms3440 KiB
17Accepted3ms3656 KiB
18Accepted3ms3736 KiB
19Accepted3ms3876 KiB
subtask310/10
20Accepted3ms3952 KiB
21Accepted3ms3952 KiB
22Accepted3ms3948 KiB
23Accepted3ms3948 KiB
24Accepted2ms3956 KiB
subtask415/15
25Accepted3ms4192 KiB
26Accepted3ms4300 KiB
27Accepted3ms4404 KiB
28Accepted3ms4380 KiB
29Accepted3ms4504 KiB
30Accepted2ms4584 KiB
31Accepted3ms4588 KiB
32Accepted3ms4716 KiB
33Accepted3ms4800 KiB
subtask50/20
34Accepted3ms4800 KiB
35Accepted3ms4912 KiB
36Wrong answer3ms4912 KiB
37Accepted3ms5160 KiB
38Accepted3ms5244 KiB
39Accepted3ms5248 KiB
40Accepted3ms5256 KiB
41Accepted3ms5376 KiB
42Accepted3ms5340 KiB
subtask60/30
43Accepted3ms5364 KiB
44Accepted2ms5336 KiB
45Accepted3ms5368 KiB
46Accepted2ms5444 KiB
47Accepted3ms5336 KiB
48Wrong answer2ms5344 KiB
49Accepted2ms5224 KiB
50Accepted3ms5224 KiB
51Accepted3ms5336 KiB
52Accepted3ms5340 KiB
53Accepted3ms5336 KiB
54Accepted3ms5348 KiB
55Accepted2ms5348 KiB
56Accepted3ms5224 KiB
57Accepted3ms5340 KiB
58Accepted3ms5336 KiB
59Accepted3ms5348 KiB
60Accepted3ms5348 KiB