Submission #1224399

#TimeUsernameProblemLanguageResultExecution timeMemory
1224399maya_sRaisins (IOI09_raisins)C++20
100 / 100
257 ms68592 KiB
#include<bits/stdc++.h> using namespace std; typedef long long ll; const ll inf = 1e18; ll dp[51][51][51][51], sum[51][51][51][51]; ll v[51][51]; int main(){ ll n, m; cin >> n >> m; for(ll i = 0; i < n; i++) for(ll j = 0; j < m; j++) cin >> v[i][j], sum[i][j][i][j] = v[i][j]; for(ll h = 0; h < n; h++){ for(ll w = 0; w < m; w++){ for(ll d = 0; d < n; d++){ for(ll l = 0; l < m; l++){ ll u = d + h, r = l + w; if(u >= n || r >= m) continue; if(u == d && r == l) continue; dp[d][l][u][r] = inf; sum[d][l][u][r] = (d != u ? sum[d][l][d][r] + sum[d+1][l][u][r] : sum[d][l][u][l] + sum[d][l+1][u][r]); for(ll i = d; i < u; i++) dp[d][l][u][r] = min(dp[d][l][u][r], dp[d][l][i][r] + dp[i+1][l][u][r]); for(ll i = l; i < r; i++) dp[d][l][u][r] = min(dp[d][l][u][r], dp[d][l][u][i] + dp[d][i+1][u][r]); dp[d][l][u][r] += sum[d][l][u][r]; // cout << d << " " << l << " " << u << " " << r << " " << sum[d][l][u][r] << " " << dp[d][l][u][r] << "\n"; } } } } cout << dp[0][0][n-1][m-1]; }
#Verdict Execution timeMemoryGrader output
Fetching results...