39252023-03-05 18:06:49zsomborHázszámokcpp17Hibás válasz 25/1003ms5412 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] < 1e14) { 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
2Elfogadva3ms2116 KiB
3Elfogadva3ms2296 KiB
subtask20/25
4Elfogadva3ms2504 KiB
5Elfogadva3ms2720 KiB
6Elfogadva3ms2936 KiB
7Elfogadva3ms3020 KiB
8Elfogadva3ms3028 KiB
9Elfogadva3ms3024 KiB
10Elfogadva3ms3152 KiB
11Elfogadva3ms3404 KiB
12Elfogadva3ms3484 KiB
13Elfogadva3ms3620 KiB
14Elfogadva3ms3828 KiB
15Hibás válasz3ms4076 KiB
16Elfogadva3ms4124 KiB
17Elfogadva3ms4252 KiB
18Elfogadva3ms4460 KiB
19Elfogadva3ms4580 KiB
subtask310/10
20Elfogadva3ms4704 KiB
21Elfogadva3ms4544 KiB
22Elfogadva3ms4512 KiB
23Elfogadva2ms4624 KiB
24Elfogadva3ms4760 KiB
subtask415/15
25Elfogadva3ms4784 KiB
26Elfogadva3ms5004 KiB
27Elfogadva3ms5008 KiB
28Elfogadva3ms5100 KiB
29Elfogadva3ms5096 KiB
30Elfogadva3ms5212 KiB
31Elfogadva3ms5096 KiB
32Elfogadva3ms4976 KiB
33Elfogadva3ms4976 KiB
subtask50/20
34Elfogadva3ms4968 KiB
35Elfogadva3ms4992 KiB
36Hibás válasz3ms4976 KiB
37Elfogadva3ms4996 KiB
38Elfogadva3ms4984 KiB
39Elfogadva3ms4984 KiB
40Elfogadva3ms4976 KiB
41Elfogadva3ms5080 KiB
42Elfogadva3ms5208 KiB
subtask60/30
43Elfogadva3ms5292 KiB
44Elfogadva3ms5184 KiB
45Elfogadva3ms5208 KiB
46Elfogadva3ms5184 KiB
47Elfogadva3ms5180 KiB
48Hibás válasz3ms5184 KiB
49Elfogadva3ms5296 KiB
50Elfogadva3ms5296 KiB
51Elfogadva3ms5308 KiB
52Elfogadva3ms5300 KiB
53Elfogadva3ms5308 KiB
54Elfogadva3ms5292 KiB
55Elfogadva2ms5292 KiB
56Elfogadva3ms5296 KiB
57Elfogadva3ms5412 KiB
58Elfogadva2ms5412 KiB
59Elfogadva3ms5200 KiB
60Elfogadva2ms5188 KiB