3929 2023. 03. 05 19:07:42 zsombor Házszámok cpp17 Elfogadva 100/100 3ms 5284 KiB
#include <iostream>
#include <vector>
using namespace std;
using ll = long long;

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

bool check(ll x) {
    fill(cnt.begin(), cnt.end(), 0);
    fill(v.begin(), v.end(), 0);
    for (ll i = 1; i <= n; i++) {
        if (x < h[i]) {
            cnt[0] += (x - h[i - 1] + 1) * i;
            break;
        }
        cnt[0] += (k - 1) * h[i - 1] * i;
    }
    for (ll 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] < 1e13) { 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;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
subtask1 0/0
1 Elfogadva 3ms 1876 KiB
2 Elfogadva 3ms 2116 KiB
3 Elfogadva 3ms 2168 KiB
subtask2 25/25
4 Elfogadva 3ms 2304 KiB
5 Elfogadva 3ms 2520 KiB
6 Elfogadva 3ms 2732 KiB
7 Elfogadva 3ms 2944 KiB
8 Elfogadva 3ms 3196 KiB
9 Elfogadva 2ms 3244 KiB
10 Elfogadva 3ms 3272 KiB
11 Elfogadva 2ms 3340 KiB
12 Elfogadva 3ms 3584 KiB
13 Elfogadva 2ms 3664 KiB
14 Elfogadva 2ms 3668 KiB
15 Elfogadva 3ms 3552 KiB
16 Elfogadva 3ms 3672 KiB
17 Elfogadva 3ms 3672 KiB
18 Elfogadva 3ms 3796 KiB
19 Elfogadva 3ms 3880 KiB
subtask3 10/10
20 Elfogadva 3ms 3888 KiB
21 Elfogadva 2ms 3772 KiB
22 Elfogadva 3ms 3924 KiB
23 Elfogadva 3ms 3956 KiB
24 Elfogadva 3ms 3956 KiB
subtask4 15/15
25 Elfogadva 3ms 3952 KiB
26 Elfogadva 3ms 3848 KiB
27 Elfogadva 3ms 3984 KiB
28 Elfogadva 3ms 4096 KiB
29 Elfogadva 3ms 4092 KiB
30 Elfogadva 3ms 4212 KiB
31 Elfogadva 3ms 4216 KiB
32 Elfogadva 3ms 4340 KiB
33 Elfogadva 3ms 4336 KiB
subtask5 20/20
34 Elfogadva 3ms 4304 KiB
35 Elfogadva 3ms 4416 KiB
36 Elfogadva 3ms 4304 KiB
37 Elfogadva 3ms 4392 KiB
38 Elfogadva 3ms 4516 KiB
39 Elfogadva 3ms 4480 KiB
40 Elfogadva 3ms 4604 KiB
41 Elfogadva 3ms 4484 KiB
42 Elfogadva 3ms 4600 KiB
subtask6 30/30
43 Elfogadva 3ms 4624 KiB
44 Elfogadva 3ms 4852 KiB
45 Elfogadva 3ms 4824 KiB
46 Elfogadva 3ms 5040 KiB
47 Elfogadva 3ms 5140 KiB
48 Elfogadva 3ms 5140 KiB
49 Elfogadva 3ms 5140 KiB
50 Elfogadva 3ms 5260 KiB
51 Elfogadva 3ms 5172 KiB
52 Elfogadva 3ms 5168 KiB
53 Elfogadva 3ms 5168 KiB
54 Elfogadva 3ms 5168 KiB
55 Elfogadva 3ms 5164 KiB
56 Elfogadva 3ms 5160 KiB
57 Elfogadva 3ms 5284 KiB
58 Elfogadva 2ms 5284 KiB
59 Elfogadva 2ms 5044 KiB
60 Elfogadva 3ms 5048 KiB