Submission #1338132

#TimeUsernameProblemLanguageResultExecution timeMemory
1338132khanhphucscratchRaisins (IOI09_raisins)C++20
100 / 100
80 ms30820 KiB
#include<bits/stdc++.h>
#define int long long
using namespace std;
inline void chmin(int &a, int b)
{
    a = min(a, b);
}
int a[55][55], dp[55][55][55][55];
signed main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    int n, m; cin>>n>>m;
    for(int i = 1; i <= n; i++){
        for(int j = 1; j <= m; j++){
            cin>>a[i][j];
            a[i][j] += a[i-1][j] + a[i][j-1] - a[i-1][j-1];
        }
    }
    for(int i = n; i >= 1; i--){
        for(int j = i; j <= n; j++){
            for(int k = m; k >= 1; k--){
                for(int l = k; l <= m; l++) if(i < j || k < l){
                    int sum = a[j][l] - a[i-1][l] - a[j][k-1] + a[i-1][k-1];
                    int &val = dp[i][j][k][l]; val = 1e18;
                    for(int m = i; m < j; m++) chmin(val, dp[i][m][k][l] + dp[m+1][j][k][l]);
                    for(int m = k; m < l; m++) chmin(val, dp[i][j][k][m] + dp[i][j][m+1][l]);
                    val += sum;
                }
            }
        }
    }
    cout<<dp[1][n][1][m];
}
#Verdict Execution timeMemoryGrader output
Fetching results...