fork download
  1. #include <bits/stdc++.h>
  2.  
  3. #define ll long long
  4. #define el cout << '\n'
  5.  
  6. using namespace std;
  7.  
  8. const int maxn = 1e2;
  9. const int C = 2 * maxn;
  10. const ll INF = 1e18;
  11.  
  12. int n, x, y, z;
  13. ll a[maxn + C + 10][maxn + C + 10][maxn + C + 10], dp[maxn + C + 10][maxn + C + 10][maxn + C + 10];
  14.  
  15. void maximize(ll &a, ll b)
  16. {
  17. a = max(a, b);
  18. }
  19.  
  20. int main()
  21. {
  22. ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
  23. if (fopen("ONGTIMMAT.INP", "r"))
  24. {
  25. freopen("ONGTIMMAT.INP", "r", stdin);
  26. freopen("ONGTIMMAT.OUT", "w", stdout);
  27. }
  28.  
  29. cin >> n;
  30. for (int i = 1; i <= 1 + 3 * n * (n + 1); i++)
  31. {
  32. int x, y, z;
  33. cin >> x >> y >> z;
  34. cin >> a[x + C][y + C][z + C];
  35. }
  36. n++;
  37. for (int i = -n; i <= n; i++)
  38. for (int j = -n; j <= n; j++)
  39. for (int k = -n; k <= n; k++)
  40. dp[i + C][j + C][k + C] = -INF;
  41. dp[0 + C][-n + C][n + C] = 0;
  42. n--;
  43. for (int j = -n; j <= n; j++)
  44. for (int k = n; k >= -n; k--)
  45. for (int i = -n; i <= n; i++)
  46. {
  47. // if (i == 0 && j == -n && k == n)
  48. // continue;
  49. maximize(dp[i + C][j + C][k + C], dp[i - 1 + C][j + C][k + 1 + C]);
  50. maximize(dp[i + C][j + C][k + C], dp[i + 1 + C][j - 1 + C][k + C]);
  51. maximize(dp[i + C][j + C][k + C], dp[i + C][j - 1 + C][k + 1 + C]);
  52. dp[i + C][j + C][k + C] += a[i + C][j + C][k + C];
  53. // cout << i << ' ' << j << ' ' << k << ' ' << dp[i + C][j + C][k + C], el;
  54. }
  55. cin >> x >> y >> z;
  56. cout << dp[x + C][y + C][z + C];
  57. }
  58.  
Success #stdin #stdout 0s 7764KB
stdin
Standard input is empty
stdout
Standard output is empty