39242023-03-05 17:54:00zsomborHázszámokcpp17Hibás válasz 25/1003ms5176 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 = 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
1Elfogadva3ms1876 KiB
2Elfogadva3ms2084 KiB
3Elfogadva3ms2296 KiB
subtask20/25
4Elfogadva3ms2660 KiB
5Elfogadva3ms2596 KiB
6Elfogadva3ms2596 KiB
7Elfogadva3ms2792 KiB
8Elfogadva3ms2876 KiB
9Elfogadva3ms3004 KiB
10Elfogadva3ms3120 KiB
11Elfogadva3ms3244 KiB
12Elfogadva3ms3464 KiB
13Elfogadva3ms3568 KiB
14Elfogadva3ms3668 KiB
15Hibás válasz3ms3752 KiB
16Elfogadva3ms3844 KiB
17Elfogadva3ms3980 KiB
18Elfogadva2ms4060 KiB
19Elfogadva3ms4100 KiB
subtask310/10
20Elfogadva2ms4176 KiB
21Elfogadva3ms4304 KiB
22Elfogadva3ms4388 KiB
23Elfogadva3ms4504 KiB
24Elfogadva3ms4664 KiB
subtask415/15
25Elfogadva3ms4528 KiB
26Elfogadva3ms4532 KiB
27Elfogadva3ms4592 KiB
28Elfogadva2ms4588 KiB
29Elfogadva3ms4844 KiB
30Elfogadva3ms4848 KiB
31Elfogadva2ms4864 KiB
32Elfogadva3ms4864 KiB
33Elfogadva2ms4860 KiB
subtask50/20
34Elfogadva3ms4824 KiB
35Elfogadva3ms4936 KiB
36Hibás válasz3ms5064 KiB
37Elfogadva3ms5056 KiB
38Elfogadva3ms5060 KiB
39Elfogadva3ms5176 KiB
40Elfogadva3ms5064 KiB
41Elfogadva3ms4940 KiB
42Elfogadva3ms5076 KiB
subtask60/30
43Elfogadva3ms5064 KiB
44Elfogadva3ms5036 KiB
45Elfogadva3ms5032 KiB
46Elfogadva3ms5064 KiB
47Elfogadva3ms5156 KiB
48Hibás válasz3ms5176 KiB
49Elfogadva3ms5152 KiB
50Elfogadva3ms5144 KiB
51Elfogadva3ms5040 KiB
52Elfogadva3ms5036 KiB
53Elfogadva3ms5152 KiB
54Elfogadva3ms5036 KiB
55Elfogadva3ms5032 KiB
56Elfogadva3ms5064 KiB
57Elfogadva3ms5036 KiB
58Elfogadva3ms5148 KiB
59Elfogadva2ms5148 KiB
60Elfogadva3ms5144 KiB