39192023-03-05 15:33:59zsomborHázszámokcpp17Hibás válasz 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;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1876 KiB
2Elfogadva3ms2120 KiB
3Elfogadva3ms2364 KiB
subtask20/25
4Elfogadva3ms2416 KiB
5Elfogadva3ms2656 KiB
6Elfogadva3ms2708 KiB
7Elfogadva3ms2952 KiB
8Elfogadva3ms3128 KiB
9Elfogadva3ms3244 KiB
10Elfogadva3ms3336 KiB
11Elfogadva3ms3336 KiB
12Elfogadva3ms3344 KiB
13Elfogadva3ms3340 KiB
14Elfogadva3ms3432 KiB
15Hibás válasz3ms3424 KiB
16Elfogadva3ms3440 KiB
17Elfogadva3ms3656 KiB
18Elfogadva3ms3736 KiB
19Elfogadva3ms3876 KiB
subtask310/10
20Elfogadva3ms3952 KiB
21Elfogadva3ms3952 KiB
22Elfogadva3ms3948 KiB
23Elfogadva3ms3948 KiB
24Elfogadva2ms3956 KiB
subtask415/15
25Elfogadva3ms4192 KiB
26Elfogadva3ms4300 KiB
27Elfogadva3ms4404 KiB
28Elfogadva3ms4380 KiB
29Elfogadva3ms4504 KiB
30Elfogadva2ms4584 KiB
31Elfogadva3ms4588 KiB
32Elfogadva3ms4716 KiB
33Elfogadva3ms4800 KiB
subtask50/20
34Elfogadva3ms4800 KiB
35Elfogadva3ms4912 KiB
36Hibás válasz3ms4912 KiB
37Elfogadva3ms5160 KiB
38Elfogadva3ms5244 KiB
39Elfogadva3ms5248 KiB
40Elfogadva3ms5256 KiB
41Elfogadva3ms5376 KiB
42Elfogadva3ms5340 KiB
subtask60/30
43Elfogadva3ms5364 KiB
44Elfogadva2ms5336 KiB
45Elfogadva3ms5368 KiB
46Elfogadva2ms5444 KiB
47Elfogadva3ms5336 KiB
48Hibás válasz2ms5344 KiB
49Elfogadva2ms5224 KiB
50Elfogadva3ms5224 KiB
51Elfogadva3ms5336 KiB
52Elfogadva3ms5340 KiB
53Elfogadva3ms5336 KiB
54Elfogadva3ms5348 KiB
55Elfogadva2ms5348 KiB
56Elfogadva3ms5224 KiB
57Elfogadva3ms5340 KiB
58Elfogadva3ms5336 KiB
59Elfogadva3ms5348 KiB
60Elfogadva3ms5348 KiB