fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. class KStone {
  5. public:
  6. string winner2D(vector<int>& stones, int n, int k) {
  7. vector<vector<bool>> dp(k+1, vector<bool>(n+1, false));
  8.  
  9. // base cases
  10. for (int j = 0; j <= n; j++)
  11. dp[0][j] = false;
  12.  
  13. for (int i = 1; i <= k; i++)
  14. dp[i][0] = false;
  15.  
  16. for (int i = 1; i <= k; i++) {
  17. for (int j = 1; j <= n; j++) {
  18. dp[i][j] = dp[i][j-1];
  19. if (i >= stones[j-1] && dp[i - stones[j-1]][j] == false) {
  20. dp[i][j] = true;
  21. }
  22. }
  23. }
  24. return dp[k][n] ? "first" : "second";
  25. }
  26.  
  27. };
  28.  
  29. int main() {
  30. int n, k;
  31. cin >> n >> k;
  32.  
  33. vector<int> stones(n);
  34.  
  35. for(int i = 0; i < n; ++i) cin >> stones[i];
  36.  
  37. KStone obj;
  38. cout << obj.winner2D(stones, n, k);
  39.  
  40. return 0;
  41. }
Success #stdin #stdout 0.01s 5272KB
stdin
2 5
2 3
stdout
second