86292024-01-24 01:46:56kukkermanFőzet készítéscpp17Elfogadva 50/50157ms6180 KiB
#include <iostream>
#include <vector>
#include <cstdint>
#include <numeric>

std::vector<std::pair<int, int>> beolvas(std::istream &be) {
    int n;
    be >> n;

    std::vector<std::pair<int, int>> kerdesek(n);
    for (auto &[k, m] : kerdesek) {
        be >> k >> m;
    }

    return kerdesek;
}

void feldolgoz(const std::vector<std::pair<int, int>> &kerdesek) {
    const int m = 32;
    const int n = 500;

    std::vector<std::vector<uint32_t>> dp(n + 1, std::vector<uint32_t>(n + 1, 0));
    for (int a = 1; a <= m; a++) {
        for (int b = 1; b <= m; b++) {
            if (std::gcd(a, b) == 1) {
                for (int i = n; i >= a; i--) {
                    for (int j = n; j >= b; j--) {
                        dp[i][j] = std::max(dp[i][j], dp[i - a][j - b] + 1);
                    }
                }
            }
        }
    }

    for (auto [k, m] : kerdesek) {
        std::cout << dp[k][m] << '\n';
    }
}

int main() {
    std::ios_base::sync_with_stdio(false);
    std::cin.tie(nullptr);
    std::cout.tie(nullptr);

    const auto kerdesek = beolvas(std::cin);
    feldolgoz(kerdesek);

    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/0156ms3684 KiB
2Elfogadva0/0156ms3884 KiB
3Elfogadva3/3156ms4012 KiB
4Elfogadva2/2156ms4140 KiB
5Elfogadva3/3155ms4392 KiB
6Elfogadva2/2156ms4740 KiB
7Elfogadva3/3157ms4856 KiB
8Elfogadva2/2156ms4816 KiB
9Elfogadva3/3156ms4908 KiB
10Elfogadva2/2156ms5112 KiB
11Elfogadva2/2156ms5476 KiB
12Elfogadva2/2156ms5488 KiB
13Elfogadva2/2156ms5756 KiB
14Elfogadva2/2156ms5732 KiB
15Elfogadva2/2157ms6012 KiB
16Elfogadva2/2156ms6020 KiB
17Elfogadva2/2156ms5936 KiB
18Elfogadva2/2156ms5952 KiB
19Elfogadva2/2156ms5964 KiB
20Elfogadva3/3156ms5984 KiB
21Elfogadva3/3156ms6080 KiB
22Elfogadva3/3156ms6016 KiB
23Elfogadva3/3156ms6180 KiB