Submission #61772653


Source Code Expand

#include <bits/stdc++.h>

using namespace std;

#define in(a)                                                                  \
    for (auto &x : a)                                                          \
        cin >> x;
#define rep(i, a, b) for (int i = a; i < b; i++)
#define out(a)                                                                 \
    for (auto x : a)                                                           \
        cout << x << " ";
#define pb push_back
#define int long long
typedef vector<int> vi;
typedef pair<int, int> pii;
// turn = 0: first
// turn = 1: second
// total: reduce it

int solve(int player, int total, vector<int> &moves)
{
    int win = 0;
    for (auto &x : moves) {
        if (total - x >= 0) {
            if (!solve(player ^ 1, total - x, moves)) {
                win = 1;
                break;
            }
        }
    }
    return win;
}
void solve()
{
    int n, total;
    cin >> n >> total;
    vi v(n);
    in(v);
    vector<vector<int>> dp(2, vector<int>(total + 1, 0));
    // dp[i][j] = {!dp[i^1][j-x]} for all x in v
    // that is there is one way that I can win
    // then mark as true

    for (int j = 0; j <= total; j++) {
        for (int i = 0; i < 2; i++) {
            for (auto x : v) {
                if (j - x >= 0) {
                    if (dp[i ^ 1][j - x] == 0) {
                        dp[i][j] = 1;
                        break;
                    }
                }
            }
        }
    }

    cout << (dp[0][total] ? "First" : "Second") << '\n';
}

int32_t main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);

    int t = 1;
    // cin >> t;

    while (t--) {
        solve();
    }

    return 0;
}

Submission Info

Submission Time
Task K - Stones
User rakim0
Language C++ 20 (gcc 12.2)
Score 100
Code Size 1805 Byte
Status AC
Exec Time 9 ms
Memory 5520 KiB

Judge Result

Set Name All
Score / Max Score 100 / 100
Status
AC × 28
Set Name Test Cases
All 0_00, 0_01, 0_02, 0_03, 0_04, 0_05, 1_00, 1_01, 1_02, 1_03, 1_04, 1_05, 1_06, 1_07, 1_08, 1_09, 1_10, 1_11, 1_12, 1_13, 1_14, 1_15, 1_16, 1_17, 1_18, 1_19, 1_20, 1_21
Case Name Status Exec Time Memory
0_00 AC 1 ms 3408 KiB
0_01 AC 1 ms 3468 KiB
0_02 AC 1 ms 3468 KiB
0_03 AC 1 ms 3328 KiB
0_04 AC 1 ms 3428 KiB
0_05 AC 2 ms 5412 KiB
1_00 AC 1 ms 3324 KiB
1_01 AC 2 ms 5288 KiB
1_02 AC 2 ms 5376 KiB
1_03 AC 9 ms 5356 KiB
1_04 AC 9 ms 5516 KiB
1_05 AC 9 ms 5452 KiB
1_06 AC 7 ms 5520 KiB
1_07 AC 7 ms 5420 KiB
1_08 AC 6 ms 5448 KiB
1_09 AC 6 ms 5408 KiB
1_10 AC 6 ms 5288 KiB
1_11 AC 7 ms 5516 KiB
1_12 AC 7 ms 5356 KiB
1_13 AC 7 ms 5416 KiB
1_14 AC 7 ms 5464 KiB
1_15 AC 7 ms 5372 KiB
1_16 AC 7 ms 5384 KiB
1_17 AC 7 ms 5424 KiB
1_18 AC 7 ms 5420 KiB
1_19 AC 7 ms 5420 KiB
1_20 AC 7 ms 5372 KiB
1_21 AC 7 ms 5344 KiB