39272023-03-05 18:49:20zsomborHázszámokcpp17Hibás válasz 25/1003ms5488 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]-1) {
            cnt[0] += ((x + 1) % h[i - 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ÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1880 KiB
2Elfogadva3ms2080 KiB
3Elfogadva3ms2296 KiB
subtask20/25
4Elfogadva3ms2376 KiB
5Elfogadva3ms2504 KiB
6Elfogadva2ms2592 KiB
7Elfogadva3ms2836 KiB
8Elfogadva2ms2804 KiB
9Elfogadva3ms3044 KiB
10Elfogadva2ms3004 KiB
11Elfogadva3ms3008 KiB
12Elfogadva3ms3280 KiB
13Elfogadva3ms3420 KiB
14Elfogadva3ms3528 KiB
15Hibás válasz3ms3608 KiB
16Elfogadva3ms3528 KiB
17Elfogadva3ms3720 KiB
18Elfogadva3ms3848 KiB
19Elfogadva3ms4084 KiB
subtask310/10
20Elfogadva3ms4136 KiB
21Elfogadva3ms4028 KiB
22Elfogadva2ms4024 KiB
23Elfogadva2ms4152 KiB
24Elfogadva3ms4156 KiB
subtask415/15
25Elfogadva3ms4272 KiB
26Elfogadva2ms4276 KiB
27Elfogadva3ms4528 KiB
28Elfogadva3ms4508 KiB
29Elfogadva3ms4500 KiB
30Elfogadva2ms4504 KiB
31Elfogadva3ms4756 KiB
32Elfogadva3ms4876 KiB
33Elfogadva3ms5120 KiB
subtask50/20
34Elfogadva3ms5132 KiB
35Elfogadva3ms5132 KiB
36Hibás válasz3ms5264 KiB
37Elfogadva3ms5260 KiB
38Elfogadva2ms5268 KiB
39Elfogadva2ms5372 KiB
40Elfogadva2ms5264 KiB
41Elfogadva2ms5268 KiB
42Elfogadva2ms5264 KiB
subtask60/30
43Elfogadva3ms5264 KiB
44Elfogadva3ms5176 KiB
45Elfogadva3ms5252 KiB
46Elfogadva3ms5256 KiB
47Elfogadva2ms5256 KiB
48Hibás válasz2ms5380 KiB
49Elfogadva2ms5256 KiB
50Elfogadva2ms5252 KiB
51Elfogadva2ms5376 KiB
52Elfogadva2ms5488 KiB
53Elfogadva2ms5252 KiB
54Elfogadva2ms5380 KiB
55Elfogadva2ms5484 KiB
56Elfogadva2ms5376 KiB
57Elfogadva3ms5252 KiB
58Elfogadva2ms5372 KiB
59Elfogadva2ms5376 KiB
60Elfogadva3ms5404 KiB