/ SeriousOJ /

Record Detail

Accepted


  
# Status Time Cost Memory Cost
#1 Accepted 9ms 26.34 MiB
#2 Accepted 17ms 26.219 MiB
#3 Accepted 462ms 26.395 MiB
#4 Accepted 91ms 26.402 MiB
#5 Accepted 66ms 26.16 MiB
#6 Accepted 43ms 26.301 MiB
#7 Accepted 483ms 26.395 MiB
#8 Accepted 8ms 26.172 MiB
#9 Accepted 8ms 26.254 MiB
#10 Accepted 9ms 26.375 MiB
#11 Accepted 10ms 26.27 MiB
#12 Accepted 39ms 26.398 MiB
#13 Accepted 84ms 26.391 MiB
#14 Accepted 14ms 26.371 MiB
#15 Accepted 11ms 26.168 MiB
#16 Accepted 71ms 26.395 MiB
#17 Accepted 9ms 26.344 MiB
#18 Accepted 29ms 26.395 MiB
#19 Accepted 145ms 26.395 MiB
#20 Accepted 169ms 26.395 MiB
#21 Accepted 66ms 26.395 MiB
#22 Accepted 47ms 26.191 MiB
#23 Accepted 32ms 26.199 MiB
#24 Accepted 9ms 26.254 MiB
#25 Accepted 24ms 26.23 MiB
#26 Accepted 29ms 26.395 MiB
#27 Accepted 89ms 26.395 MiB
#28 Accepted 9ms 26.32 MiB
#29 Accepted 9ms 26.281 MiB
#30 Accepted 10ms 26.391 MiB
#31 Accepted 13ms 26.199 MiB
#32 Accepted 14ms 26.398 MiB
#33 Accepted 19ms 26.32 MiB
#34 Accepted 15ms 26.32 MiB
#35 Accepted 19ms 26.223 MiB
#36 Accepted 26ms 26.402 MiB
#37 Accepted 21ms 26.207 MiB
#38 Accepted 23ms 26.398 MiB
#39 Accepted 27ms 26.371 MiB

Code

#include <bits/stdc++.h>
using namespace std;

vector<array<int, 4>> v;

void BaseCases() {
    v.push_back({0, 0, 3, 0});
    v.push_back({1, 1, 2, 0});
    v.push_back({3, 0, 2, 0});
    v.push_back({0, 0, 1, 2});
    v.push_back({1, 1, 1, 1});
    v.push_back({3, 0, 1, 1});
    v.push_back({0, 3, 1, 0});
    v.push_back({2, 2, 1, 0});
    v.push_back({4, 1, 1, 0});
    v.push_back({6, 0, 1, 0});
    v.push_back({1, 1, 0, 2});
    v.push_back({3, 0, 0, 2});
    v.push_back({2, 2, 0, 1});
    v.push_back({4, 1, 0, 1});
    v.push_back({6, 0, 0, 1});
    v.push_back({1, 4, 0, 0});
    v.push_back({3, 3, 0, 0});
    v.push_back({5, 2, 0, 0});
    v.push_back({7, 1, 0, 0});
    v.push_back({9, 0, 0, 0});
}

int dp[51][51][51][51];

int f(int a, int b, int c, int d) {
    if (a < 0 || b < 0 || c < 0 || d < 0) return -1;
    if (a == 0 && b == 0 && c == 0 && d == 0) return 0; 

    if (dp[a][b][c][d] != -1) return dp[a][b][c][d];

    int res = 0; 
    for (auto &[i, j, k, l] : v) {
        if (i <= a && j <= b && k <= c && l <= d) {
            res = max(res, f(a - i, b - j, c - k, d - l) + 1);
        }
    }

    return dp[a][b][c][d] = res;
}

void solve(int cs) {
    int a, b, c, d;
    cin >> a >> b >> c >> d;
    memset(dp, -1, sizeof(dp));
    cout << "Case " << cs << ": " << f(a, b, c, d) << "\n";
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int tc;
    cin >> tc;
    BaseCases();
    for (int cs = 1; cs <= tc; cs++) {
        solve(cs);
    }
    return 0;
}

Information

Submit By
Type
Submission
Problem
P1014 FIFA World Cup 2022 Again!
Language
C++20 (G++ 13.2.0)
Submit At
2024-07-13 09:31:15
Judged At
2024-07-13 09:31:15
Judged By
Score
100
Total Time
483ms
Peak Memory
26.402 MiB