86292024-01-24 01:46:56kukkermanFőzet készítéscpp17Accepted 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;
}
SubtaskSumTestVerdictTimeMemory
base50/50
1Accepted0/0156ms3684 KiB
2Accepted0/0156ms3884 KiB
3Accepted3/3156ms4012 KiB
4Accepted2/2156ms4140 KiB
5Accepted3/3155ms4392 KiB
6Accepted2/2156ms4740 KiB
7Accepted3/3157ms4856 KiB
8Accepted2/2156ms4816 KiB
9Accepted3/3156ms4908 KiB
10Accepted2/2156ms5112 KiB
11Accepted2/2156ms5476 KiB
12Accepted2/2156ms5488 KiB
13Accepted2/2156ms5756 KiB
14Accepted2/2156ms5732 KiB
15Accepted2/2157ms6012 KiB
16Accepted2/2156ms6020 KiB
17Accepted2/2156ms5936 KiB
18Accepted2/2156ms5952 KiB
19Accepted2/2156ms5964 KiB
20Accepted3/3156ms5984 KiB
21Accepted3/3156ms6080 KiB
22Accepted3/3156ms6016 KiB
23Accepted3/3156ms6180 KiB