fork download
  1. #include <algorithm>
  2. #include <bitset>
  3. #include <climits>
  4. #include <cmath>
  5. #include <cstdio>
  6. #include <cstring>
  7. #include <ctime>
  8. #include <deque>
  9. #include <functional>
  10. #include <iomanip>
  11. #include <iostream>
  12. #include <list>
  13. #include <map>
  14. #include <queue>
  15. #include <set>
  16. #include <sstream>
  17. #include <stack>
  18. #include <string>
  19. #include <vector>
  20.  
  21. using namespace std;
  22.  
  23. #define FOR(i, N) for(int i = 0; i < N; i++)
  24. #define FOR1e(i, N) for(int i = 1; i <= N; i++)
  25. #define REP(i, M, N) for(int i = M; i < N; i++)
  26. #define REPe(i, M, N) for(int i = M; i <= N; i++)
  27. #define sc(N) scanf("%d", &N)
  28. #define scsc(M, N) scanf("%d %d", &M, &N)
  29. #define scscsc(M, N, O) scanf("%d %d %d", &M, &N, &O)
  30. #define all(s) s.begin(), s.end()
  31. #define gt(s) getline(cin, s)
  32. #define ms(a, v) memset(a, v, sizeof a)
  33. #define mp make_pair
  34. #define pb push_back
  35. #define pq priority_queue
  36. #define ss stringstream
  37.  
  38. typedef long long ll;
  39. typedef pair<int, int> pii;
  40. typedef vector<int> vi;
  41.  
  42. const int oo = 1 << 30;
  43. const int MAX = 1e5 + 1;
  44. const int MOD = 1e9 + 7;
  45.  
  46. int dr[] = { 0, -1, 0, 1 };
  47. int dc[] = { 1, 0, -1, 0 };
  48.  
  49. inline int Pow(int b, int p) { if (!p) return 1; int sq = Pow(b, p >> 1); sq *= sq; if (p & 1) sq *= b; return sq; }
  50. inline int gcd(int a, int b) { if (!a) return b; return gcd(b % a, a); }
  51. inline string toString(int x) { ss SS; SS << x; return SS.str(); }
  52.  
  53. int n, m;
  54. int dp[55][55][105][2];
  55. vector <string> arr;
  56.  
  57. bool valid(int r, int c){
  58. return (r < n && r >= 0 && c < m && c >= 0 && arr[r][c] != '#');
  59. }
  60.  
  61. bool solve(int r, int c, int k, bool alice){
  62. int &ret = dp[r][c][k][alice];
  63. if (ret != -1)
  64. return ret;
  65. if (alice){
  66. if (!k)
  67. return ret = 0;
  68. bool can = 0;
  69. FOR(i, 4){
  70. int nr = r + dr[i], nc = c + dc[i];
  71. if (valid(nr, nc)){
  72. can = 1;
  73. if (arr[nr][nc] == 'E')
  74. return ret = 1;
  75. if (solve(nr, nc, k - 1, !alice)){
  76. return ret = 1;
  77. }
  78. }
  79. }
  80. if (!can)
  81. return ret = 0;
  82. }
  83. else{
  84. if (!k)
  85. return ret = 1;
  86. bool can = 0;
  87. FOR(i, 4){
  88. int nr = r + dr[i], nc = c + dc[i];
  89. if (valid(nr, nc)){
  90. can = 1;
  91. if (arr[nr][nc] == 'E')
  92. return ret = 0;
  93. if (solve(nr, nc, k - 1, !alice)){
  94. return ret = 0;
  95. }
  96. }
  97. }
  98. if (!can)
  99. return ret = 1;
  100. }
  101. }
  102.  
  103. class BoardEscapeDiv2 {
  104. public:
  105. string findWinner(vector <string> s, int k) {
  106. n = s.size(); m = s[0].size();
  107. arr = s;
  108. ms(dp, -1);
  109. int r = 0, c = 0;
  110. FOR(i, n){
  111. FOR(j, m){
  112. if (s[i][j] == 'T'){
  113. r = i;
  114. c = j;
  115. goto GOTO;
  116. }
  117. }
  118. }
  119. GOTO:
  120. return (solve(r, c, k, 1)) ? "Alice" : "Bob";
  121. }
  122. };
  123.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
/usr/lib/gcc/i586-linux-gnu/5/../../../i386-linux-gnu/crt1.o: In function `_start':
(.text+0x18): undefined reference to `main'
collect2: error: ld returned 1 exit status
stdout
Standard output is empty