39262023-03-05 18:16:45zsomborHázszámokcpp17Hibás válasz 25/1003ms5392 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 (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] < 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ÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1872 KiB
2Elfogadva3ms2124 KiB
3Elfogadva3ms2336 KiB
subtask20/25
4Elfogadva3ms2552 KiB
5Elfogadva3ms2712 KiB
6Elfogadva3ms2820 KiB
7Elfogadva3ms3032 KiB
8Elfogadva2ms3140 KiB
9Elfogadva2ms3140 KiB
10Elfogadva3ms3140 KiB
11Elfogadva3ms3104 KiB
12Elfogadva2ms3104 KiB
13Elfogadva2ms3120 KiB
14Elfogadva2ms3116 KiB
15Hibás válasz2ms3116 KiB
16Elfogadva3ms3244 KiB
17Elfogadva2ms3332 KiB
18Elfogadva2ms3328 KiB
19Elfogadva2ms3332 KiB
subtask310/10
20Elfogadva3ms3568 KiB
21Elfogadva3ms4052 KiB
22Elfogadva3ms4128 KiB
23Elfogadva3ms4004 KiB
24Elfogadva3ms4028 KiB
subtask415/15
25Elfogadva3ms4092 KiB
26Elfogadva3ms4092 KiB
27Elfogadva3ms4228 KiB
28Elfogadva3ms4340 KiB
29Elfogadva3ms4420 KiB
30Elfogadva2ms4424 KiB
31Elfogadva3ms4660 KiB
32Elfogadva3ms4632 KiB
33Elfogadva3ms4744 KiB
subtask50/20
34Elfogadva3ms4736 KiB
35Elfogadva3ms4896 KiB
36Hibás válasz3ms4788 KiB
37Elfogadva3ms4780 KiB
38Elfogadva3ms4676 KiB
39Elfogadva3ms4684 KiB
40Elfogadva3ms4756 KiB
41Elfogadva2ms4756 KiB
42Elfogadva3ms4872 KiB
subtask60/30
43Elfogadva3ms4868 KiB
44Elfogadva3ms5000 KiB
45Elfogadva3ms5260 KiB
46Elfogadva2ms5216 KiB
47Elfogadva3ms5316 KiB
48Hibás válasz3ms5320 KiB
49Elfogadva3ms5392 KiB
50Elfogadva3ms5216 KiB
51Elfogadva3ms5224 KiB
52Elfogadva3ms5220 KiB
53Elfogadva3ms5336 KiB
54Elfogadva2ms5340 KiB
55Elfogadva2ms5332 KiB
56Elfogadva2ms5336 KiB
57Elfogadva3ms5232 KiB
58Elfogadva3ms5340 KiB
59Elfogadva3ms5228 KiB
60Elfogadva3ms5344 KiB