This documentation is automatically generated by competitive-verifier/competitive-verifier
// competitive-verifier: PROBLEM https://onlinejudge.u-aizu.ac.jp/challenges/sources/PCK/Final/0401
// competitive-verifier: TLE 0.5
// competitive-verifier: MLE 64
#include <iostream>
#include <vector>
#include "src/Game/ImpartialGame.hpp"
using namespace std;
signed main() {
cin.tie(0);
ios::sync_with_stdio(false);
using Game= pair<int, int>;
auto f= [&](const Game &g) {
vector<Game> ret;
if (g.first > 0) ret.emplace_back(g), ret.back().first--;
for (int i= min(g.first, g.second); i > 0; i--) ret.emplace_back(g), ret.back().second-= i;
if (g.second > 0) ret.emplace_back(g), ret.back().first++, ret.back().second--;
return ret;
};
ImpartialGame<Game, decltype(f)> ig(f);
int sum= 0, N;
cin >> N;
while (N--) {
int w, b;
cin >> w >> b;
sum^= ig.eval(Game(w, b));
}
cout << !sum << '\n';
return 0;
}
#line 1 "test/aoj/0401.test.cpp"
// competitive-verifier: PROBLEM https://onlinejudge.u-aizu.ac.jp/challenges/sources/PCK/Final/0401
// competitive-verifier: TLE 0.5
// competitive-verifier: MLE 64
#include <iostream>
#include <vector>
#line 2 "src/Game/ImpartialGame.hpp"
#include <map>
#include <algorithm>
#line 5 "src/Game/ImpartialGame.hpp"
template <typename Game, typename F> struct ImpartialGame {
std::map<Game, unsigned> mp;
F f; // : Game -> std::vector<Game>
static unsigned mex(std::vector<unsigned> S) {
std::sort(S.begin(), S.end()), S.erase(std::unique(S.begin(), S.end()), S.end());
for (unsigned i= 0; i < S.size(); i++)
if (S[i] != i) return i;
return S.size();
}
public:
ImpartialGame(const F &_f): f(_f) {}
unsigned eval(Game g) {
if (mp.count(g)) return mp[g];
std::vector<unsigned> S;
for (const auto &_g: f(g)) S.emplace_back(eval(_g));
return mp[g]= mex(S);
}
};
#line 7 "test/aoj/0401.test.cpp"
using namespace std;
signed main() {
cin.tie(0);
ios::sync_with_stdio(false);
using Game= pair<int, int>;
auto f= [&](const Game &g) {
vector<Game> ret;
if (g.first > 0) ret.emplace_back(g), ret.back().first--;
for (int i= min(g.first, g.second); i > 0; i--) ret.emplace_back(g), ret.back().second-= i;
if (g.second > 0) ret.emplace_back(g), ret.back().first++, ret.back().second--;
return ret;
};
ImpartialGame<Game, decltype(f)> ig(f);
int sum= 0, N;
cin >> N;
while (N--) {
int w, b;
cin >> w >> b;
sum^= ig.eval(Game(w, b));
}
cout << !sum << '\n';
return 0;
}
Env | Name | Status | Elapsed | Memory |
---|---|---|---|---|
g++-13 | 00_sample_01.in |
![]() |
47 ms | 4 MB |
g++-13 | 00_sample_02.in |
![]() |
15 ms | 4 MB |
g++-13 | 10_lose_small_001.in |
![]() |
16 ms | 4 MB |
g++-13 | 10_lose_small_002.in |
![]() |
45 ms | 5 MB |
g++-13 | 10_lose_small_003.in |
![]() |
27 ms | 4 MB |
g++-13 | 10_lose_small_004.in |
![]() |
41 ms | 4 MB |
g++-13 | 10_lose_small_005.in |
![]() |
30 ms | 4 MB |
g++-13 | 10_lose_small_006.in |
![]() |
7 ms | 4 MB |
g++-13 | 15_win_small_001.in |
![]() |
12 ms | 4 MB |
g++-13 | 15_win_small_002.in |
![]() |
40 ms | 4 MB |
g++-13 | 15_win_small_003.in |
![]() |
25 ms | 4 MB |
g++-13 | 15_win_small_004.in |
![]() |
41 ms | 4 MB |
g++-13 | 15_win_small_005.in |
![]() |
39 ms | 4 MB |
g++-13 | 15_win_small_006.in |
![]() |
58 ms | 5 MB |
g++-13 | 20_lose_medium_001.in |
![]() |
70 ms | 5 MB |
g++-13 | 20_lose_medium_002.in |
![]() |
70 ms | 5 MB |
g++-13 | 20_lose_medium_003.in |
![]() |
69 ms | 5 MB |
g++-13 | 20_lose_medium_004.in |
![]() |
68 ms | 5 MB |
g++-13 | 20_lose_medium_005.in |
![]() |
62 ms | 5 MB |
g++-13 | 20_lose_medium_006.in |
![]() |
71 ms | 5 MB |
g++-13 | 25_win_medium_001.in |
![]() |
70 ms | 5 MB |
g++-13 | 25_win_medium_002.in |
![]() |
68 ms | 5 MB |
g++-13 | 25_win_medium_003.in |
![]() |
68 ms | 5 MB |
g++-13 | 25_win_medium_004.in |
![]() |
68 ms | 5 MB |
g++-13 | 25_win_medium_005.in |
![]() |
68 ms | 5 MB |
g++-13 | 25_win_medium_006.in |
![]() |
71 ms | 5 MB |
g++-13 | 30_lose_large_001.in |
![]() |
72 ms | 5 MB |
g++-13 | 30_lose_large_002.in |
![]() |
72 ms | 5 MB |
g++-13 | 30_lose_large_003.in |
![]() |
72 ms | 5 MB |
g++-13 | 30_lose_large_004.in |
![]() |
72 ms | 5 MB |
g++-13 | 30_lose_large_005.in |
![]() |
73 ms | 5 MB |
g++-13 | 30_lose_large_006.in |
![]() |
73 ms | 5 MB |
g++-13 | 35_win_large_001.in |
![]() |
71 ms | 5 MB |
g++-13 | 35_win_large_002.in |
![]() |
71 ms | 5 MB |
g++-13 | 35_win_large_003.in |
![]() |
71 ms | 5 MB |
g++-13 | 35_win_large_004.in |
![]() |
71 ms | 5 MB |
g++-13 | 35_win_large_005.in |
![]() |
71 ms | 5 MB |
g++-13 | 35_win_large_006.in |
![]() |
71 ms | 5 MB |
g++-13 | 40_max_001.in |
![]() |
72 ms | 5 MB |
g++-13 | 40_max_002.in |
![]() |
73 ms | 5 MB |
g++-13 | 50_min_001.in |
![]() |
5 ms | 4 MB |
g++-13 | 50_min_002.in |
![]() |
71 ms | 5 MB |
clang++-18 | 00_sample_01.in |
![]() |
46 ms | 5 MB |
clang++-18 | 00_sample_02.in |
![]() |
15 ms | 4 MB |
clang++-18 | 10_lose_small_001.in |
![]() |
15 ms | 4 MB |
clang++-18 | 10_lose_small_002.in |
![]() |
45 ms | 5 MB |
clang++-18 | 10_lose_small_003.in |
![]() |
27 ms | 4 MB |
clang++-18 | 10_lose_small_004.in |
![]() |
41 ms | 4 MB |
clang++-18 | 10_lose_small_005.in |
![]() |
31 ms | 4 MB |
clang++-18 | 10_lose_small_006.in |
![]() |
7 ms | 4 MB |
clang++-18 | 15_win_small_001.in |
![]() |
12 ms | 4 MB |
clang++-18 | 15_win_small_002.in |
![]() |
39 ms | 4 MB |
clang++-18 | 15_win_small_003.in |
![]() |
25 ms | 4 MB |
clang++-18 | 15_win_small_004.in |
![]() |
40 ms | 4 MB |
clang++-18 | 15_win_small_005.in |
![]() |
38 ms | 4 MB |
clang++-18 | 15_win_small_006.in |
![]() |
57 ms | 5 MB |
clang++-18 | 20_lose_medium_001.in |
![]() |
68 ms | 5 MB |
clang++-18 | 20_lose_medium_002.in |
![]() |
68 ms | 5 MB |
clang++-18 | 20_lose_medium_003.in |
![]() |
67 ms | 5 MB |
clang++-18 | 20_lose_medium_004.in |
![]() |
66 ms | 5 MB |
clang++-18 | 20_lose_medium_005.in |
![]() |
61 ms | 5 MB |
clang++-18 | 20_lose_medium_006.in |
![]() |
70 ms | 5 MB |
clang++-18 | 25_win_medium_001.in |
![]() |
69 ms | 5 MB |
clang++-18 | 25_win_medium_002.in |
![]() |
66 ms | 5 MB |
clang++-18 | 25_win_medium_003.in |
![]() |
66 ms | 5 MB |
clang++-18 | 25_win_medium_004.in |
![]() |
66 ms | 5 MB |
clang++-18 | 25_win_medium_005.in |
![]() |
66 ms | 5 MB |
clang++-18 | 25_win_medium_006.in |
![]() |
69 ms | 5 MB |
clang++-18 | 30_lose_large_001.in |
![]() |
69 ms | 5 MB |
clang++-18 | 30_lose_large_002.in |
![]() |
69 ms | 5 MB |
clang++-18 | 30_lose_large_003.in |
![]() |
71 ms | 5 MB |
clang++-18 | 30_lose_large_004.in |
![]() |
70 ms | 5 MB |
clang++-18 | 30_lose_large_005.in |
![]() |
72 ms | 5 MB |
clang++-18 | 30_lose_large_006.in |
![]() |
71 ms | 5 MB |
clang++-18 | 35_win_large_001.in |
![]() |
70 ms | 5 MB |
clang++-18 | 35_win_large_002.in |
![]() |
70 ms | 5 MB |
clang++-18 | 35_win_large_003.in |
![]() |
71 ms | 5 MB |
clang++-18 | 35_win_large_004.in |
![]() |
70 ms | 5 MB |
clang++-18 | 35_win_large_005.in |
![]() |
70 ms | 5 MB |
clang++-18 | 35_win_large_006.in |
![]() |
69 ms | 5 MB |
clang++-18 | 40_max_001.in |
![]() |
71 ms | 5 MB |
clang++-18 | 40_max_002.in |
![]() |
71 ms | 5 MB |
clang++-18 | 50_min_001.in |
![]() |
4 ms | 4 MB |
clang++-18 | 50_min_002.in |
![]() |
70 ms | 5 MB |