39182023-03-05 15:32:39zsomborHázszámokcpp17Hibás válasz 0/1003ms5004 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 = 6, 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
2Hibás válasz2ms2128 KiB
3Hibás válasz2ms2336 KiB
subtask20/25
4Hibás válasz2ms2488 KiB
5Hibás válasz3ms2700 KiB
6Hibás válasz3ms2912 KiB
7Hibás válasz3ms3128 KiB
8Hibás válasz2ms3244 KiB
9Hibás válasz2ms3492 KiB
10Hibás válasz2ms3716 KiB
11Hibás válasz2ms3740 KiB
12Hibás válasz2ms3752 KiB
13Hibás válasz2ms3876 KiB
14Hibás válasz2ms3748 KiB
15Hibás válasz2ms3756 KiB
16Hibás válasz2ms3756 KiB
17Hibás válasz2ms3756 KiB
18Hibás válasz3ms3752 KiB
19Hibás válasz2ms3752 KiB
subtask30/10
20Hibás válasz2ms3752 KiB
21Hibás válasz3ms3868 KiB
22Hibás válasz3ms3876 KiB
23Elfogadva3ms4092 KiB
24Hibás válasz2ms4144 KiB
subtask40/15
25Hibás válasz2ms4140 KiB
26Hibás válasz3ms4272 KiB
27Hibás válasz3ms4480 KiB
28Hibás válasz2ms4564 KiB
29Hibás válasz3ms4564 KiB
30Hibás válasz3ms4568 KiB
31Hibás válasz2ms4572 KiB
32Hibás válasz3ms4580 KiB
33Hibás válasz3ms4708 KiB
subtask50/20
34Hibás válasz2ms4788 KiB
35Hibás válasz3ms4784 KiB
36Hibás válasz2ms4792 KiB
37Hibás válasz2ms4784 KiB
38Hibás válasz2ms4792 KiB
39Hibás válasz3ms4788 KiB
40Hibás válasz3ms4788 KiB
41Hibás válasz2ms4788 KiB
42Hibás válasz2ms4788 KiB
subtask60/30
43Hibás válasz2ms4784 KiB
44Hibás válasz2ms4784 KiB
45Hibás válasz2ms4788 KiB
46Hibás válasz2ms4816 KiB
47Hibás válasz3ms4812 KiB
48Hibás válasz2ms4804 KiB
49Hibás válasz3ms4940 KiB
50Hibás válasz3ms4948 KiB
51Hibás válasz3ms4916 KiB
52Elfogadva3ms4940 KiB
53Hibás válasz3ms5004 KiB
54Hibás válasz3ms4900 KiB
55Hibás válasz3ms4896 KiB
56Hibás válasz3ms4892 KiB
57Hibás válasz3ms4900 KiB
58Hibás válasz3ms4896 KiB
59Hibás válasz2ms4896 KiB
60Hibás válasz3ms4896 KiB