Advertisement
Gosunov

Untitled

Oct 7th, 2022
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.10 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define all(a) (a).begin(), (a).end()
  4. #define int long long
  5.  
  6. const int n = 50;
  7. int dp[n][n];
  8.  
  9. void solve() {
  10.     for (int i = 0; i < n; ++i) {
  11.         for (int j = 0; j < n; ++j) {
  12.             dp[i][j] = 1e9;
  13.         }
  14.     }
  15.     for (int i = 1; i < n; ++i) {
  16.         dp[0][i] = 0;
  17.         dp[i][0] = 0;
  18.         dp[1][i] = i;
  19.         dp[i][1] = i;
  20.     }
  21.     for (int a = 2; a < n; ++a) {
  22.         for (int b = 2; b < n; ++b) {
  23.             for (int y = 0; y <= b; ++y) {
  24.                 for (int x1 = 0; x1 <= a; ++x1) {
  25.                     for (int x2 = 0; x2 <= a; ++x2) {
  26.                         dp[a][b] = min(
  27.                             dp[a][b],
  28.                             dp[x1][y] + dp[a - x1][y] + dp[x2][b - y] + dp[a - x2][b - y]
  29.                         );
  30.                     }
  31.                 }
  32.             }
  33.             if (a == b) {
  34.                 cout << a << ": " << dp[a][a] << '\n';
  35.                 dp[a][a] = 1;
  36.             }
  37.         }
  38.     }
  39. }
  40.  
  41. signed main() {
  42.     ios::sync_with_stdio(0); cin.tie(0);
  43.     solve();
  44. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement