結果
問題 | No.2103 ±1s Game |
ユーザー | sortreew |
提出日時 | 2022-10-21 22:07:35 |
言語 | C++14 (gcc 12.3.0 + boost 1.83.0) |
結果 |
AC
|
実行時間 | 7 ms / 1,000 ms |
コード長 | 4,187 bytes |
コンパイル時間 | 1,619 ms |
コンパイル使用メモリ | 170,416 KB |
実行使用メモリ | 16,964 KB |
最終ジャッジ日時 | 2024-07-01 06:41:21 |
合計ジャッジ時間 | 3,342 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 6 ms
15,940 KB |
testcase_01 | AC | 6 ms
15,560 KB |
testcase_02 | AC | 6 ms
16,192 KB |
testcase_03 | AC | 7 ms
15,684 KB |
testcase_04 | AC | 6 ms
16,324 KB |
testcase_05 | AC | 6 ms
15,812 KB |
testcase_06 | AC | 7 ms
16,192 KB |
testcase_07 | AC | 7 ms
15,296 KB |
testcase_08 | AC | 7 ms
16,452 KB |
testcase_09 | AC | 7 ms
16,708 KB |
testcase_10 | AC | 6 ms
15,688 KB |
testcase_11 | AC | 6 ms
15,300 KB |
testcase_12 | AC | 6 ms
15,424 KB |
testcase_13 | AC | 7 ms
15,168 KB |
testcase_14 | AC | 6 ms
15,688 KB |
testcase_15 | AC | 6 ms
15,812 KB |
testcase_16 | AC | 6 ms
16,576 KB |
testcase_17 | AC | 7 ms
15,300 KB |
testcase_18 | AC | 7 ms
15,560 KB |
testcase_19 | AC | 6 ms
15,812 KB |
testcase_20 | AC | 7 ms
16,580 KB |
testcase_21 | AC | 7 ms
15,552 KB |
testcase_22 | AC | 7 ms
15,304 KB |
testcase_23 | AC | 7 ms
16,456 KB |
testcase_24 | AC | 6 ms
15,688 KB |
testcase_25 | AC | 7 ms
15,556 KB |
testcase_26 | AC | 6 ms
15,560 KB |
testcase_27 | AC | 7 ms
15,944 KB |
testcase_28 | AC | 7 ms
15,936 KB |
testcase_29 | AC | 6 ms
15,684 KB |
testcase_30 | AC | 7 ms
15,684 KB |
testcase_31 | AC | 7 ms
16,964 KB |
testcase_32 | AC | 6 ms
15,428 KB |
testcase_33 | AC | 6 ms
16,200 KB |
testcase_34 | AC | 6 ms
16,192 KB |
testcase_35 | AC | 6 ms
15,816 KB |
testcase_36 | AC | 6 ms
15,432 KB |
ソースコード
#include "bits/stdc++.h" #define YES "YES" #define NO "NO" #define Yes "Yes" #define No "No" #define DEFAULT \ LL ans = solve(); \ if (ans == NONE) \ { \ } \ else \ { \ cout << ans << endl; \ } #define YESNO three(solve(), (OUT(YES), 1), (OUT(NO), 0)) #define YesNo three(solve(), OUT(Yes), OUT(No)) #define ECHO OUT(solve()) #define three(A, B, C) ((A) ? (B) : (C)) #define FOR(i, a, b) for (LL i = (a); i < (LL)(b); i++) #define EFOR(i, a, b) for (LL i = (a); i <= (LL)(b); i++) #define RFOR(i, a, b) for (LL i = (b - 1); i >= (LL)(a); i--) #define REP(i, b) FOR(i, zero, b) #define rep REP #define EREP(i, b) EFOR(i, zero, b) #define RREP(i, b) RFOR(i, zero, b) #define ALL(c) c.begin(), c.end() #define UNIQUE(c) \ sort(ALL(c)); \ c.erase(unique(ALL(c)), c.end()) #define MAX(c) (*max_element(ALL(c))) #define MIN(c) (*min_element(ALL(c))) #define MP make_pair #define FI first #define SE second #define SI(x) (LL(x.size())) #define PB push_back #define DEBUG(a) OUT(a) #define DEBUG2(a, b) OUT2(a, b) #define cat cout << __LINE__ << endl #define OUT(a) cout << (a) << endl #define OUT2(a, b) cout << (a) << " " << (b) << endl #define zero 0LL #define all ALL #define pb emplace_back #define eb pb #define int long long using namespace std; template <typename T> inline void maximize(T &a, T b) { a = max(a, b); } template <typename T> inline void minimize(T &a, T b) { a = min(a, b); } template <typename T> inline bool middle(T a, T b, T c) { return b <= a && a <= c; } template <class T> inline bool MX(T &l, const T &r) { return l < r ? l = r, 1 : 0; } template <class T> inline bool MN(T &l, const T &r) { return l > r ? l = r, 1 : 0; } typedef int LL; typedef double ld; typedef int ut; typedef vector<ut> VI; typedef vector<VI> VII; typedef pair<ut, ut> pr; typedef pair<ut, pr> ppr; typedef vector<pr> Vpr; typedef vector<ppr> Vppr; typedef tuple<int, int, int, int> tapu; typedef vector<tapu> Vtapu; typedef priority_queue<pr, Vpr> PQ; inline void outputVI(VI x) { REP(i, SI(x)) { cout << three(i, " ", "") << x[i]; } OUT(""); } const int SIZE1 = 5e5 + 1000; const int SIZE2 = 5010; const int SIZE3 = 430; const int SIZE = SIZE1; const int MAPSIZE = 40; const LL p998 = 998244353; const LL p107 = 1000000007; const LL p = p107; const LL INF = 1LL << 60; const long double EPS = 1e-7; const LL NONE = -2; #define endl "\n" ut N, M, D, Q, I, S, V, F; VI edges[SIZE]; LL vals[SIZE], answer = zero; // LL A[SIZE],B[SIZE],C[SIZE]; bool calced[100][100][100][3][3]; LL dp[100][100][100][3][3]; LL X, Y, K, P; LL calc(LL x, LL y, LL k, LL p, LL ans) { if (x < 0 or y < 0) return 1; if (calced[x][y][k][p + 1][ans + 1]) return dp[x][y][k][p + 1][ans + 1]; if (x + y == k) return p == ans; calced[x][y][k][p + 1][ans + 1] = true; return dp[x][y][k][p + 1][ans + 1] = 1 - min(calc(x - 1, y, k, p * -1, ans), calc(x, y - 1, k, p * -1, ans * -1)); } LL solve(LL X, LL Y, LL K, LL P) { LL used = (X + Y - K); LL last = (used + 1) % 2; LL able = (X + Y - K) / 2; if (able >= X) { LL ys = K; LL ans = ys % 2; return (P == -1 and ans == 0) or (P == 1 and ans == 1); } if (able >= Y) { return P == -1; } return last; } signed main() { ios_base::sync_with_stdio(false); cout << fixed << setprecision(10); LL T = 1; cin >> X >> Y >> K >> P; /* EFOR(X, 1, 20) EFOR(Y, 1, 20) EFOR(K, 1, X + Y - 1) for (int P : {1, -1}) { cout << X << " " << Y << " " << K << " " << P << endl; if (solve(X, Y, K, P) != calc(X, Y, K, P, 1)) { cout << solve(X, Y, K, P) << endl; exit(0); } } */ REP(i, T) { cout << three(solve(X, Y, K, P), "Bob", "Alice") << endl; // cout << three(calc(X, Y, K, P, 1), "Alice", "Bob") << endl; } // YesNo; // YESNO; // three(solve(),OUT("First"),OUT("Second")); // cin >> N; return 0; }