39252023-03-05 18:06:49zsomborHázszámokcpp17Wrong answer 25/1003ms5412 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] < 1e14) { n++; h[n] = k * h[n - 1]; }
    for (int i = 0; i < k; i++) cin >> CNT[i];
    ll l = 0, r = 1e13, m;
    while (r - l > 1) {
        m = (l + r) / 2;
        (check(m) ? l = m : r = m);
    }
    cout << l;
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted3ms1872 KiB
2Accepted3ms2116 KiB
3Accepted3ms2296 KiB
subtask20/25
4Accepted3ms2504 KiB
5Accepted3ms2720 KiB
6Accepted3ms2936 KiB
7Accepted3ms3020 KiB
8Accepted3ms3028 KiB
9Accepted3ms3024 KiB
10Accepted3ms3152 KiB
11Accepted3ms3404 KiB
12Accepted3ms3484 KiB
13Accepted3ms3620 KiB
14Accepted3ms3828 KiB
15Wrong answer3ms4076 KiB
16Accepted3ms4124 KiB
17Accepted3ms4252 KiB
18Accepted3ms4460 KiB
19Accepted3ms4580 KiB
subtask310/10
20Accepted3ms4704 KiB
21Accepted3ms4544 KiB
22Accepted3ms4512 KiB
23Accepted2ms4624 KiB
24Accepted3ms4760 KiB
subtask415/15
25Accepted3ms4784 KiB
26Accepted3ms5004 KiB
27Accepted3ms5008 KiB
28Accepted3ms5100 KiB
29Accepted3ms5096 KiB
30Accepted3ms5212 KiB
31Accepted3ms5096 KiB
32Accepted3ms4976 KiB
33Accepted3ms4976 KiB
subtask50/20
34Accepted3ms4968 KiB
35Accepted3ms4992 KiB
36Wrong answer3ms4976 KiB
37Accepted3ms4996 KiB
38Accepted3ms4984 KiB
39Accepted3ms4984 KiB
40Accepted3ms4976 KiB
41Accepted3ms5080 KiB
42Accepted3ms5208 KiB
subtask60/30
43Accepted3ms5292 KiB
44Accepted3ms5184 KiB
45Accepted3ms5208 KiB
46Accepted3ms5184 KiB
47Accepted3ms5180 KiB
48Wrong answer3ms5184 KiB
49Accepted3ms5296 KiB
50Accepted3ms5296 KiB
51Accepted3ms5308 KiB
52Accepted3ms5300 KiB
53Accepted3ms5308 KiB
54Accepted3ms5292 KiB
55Accepted2ms5292 KiB
56Accepted3ms5296 KiB
57Accepted3ms5412 KiB
58Accepted2ms5412 KiB
59Accepted3ms5200 KiB
60Accepted2ms5188 KiB