254232026-02-20 00:24:28999Táblatöréspython3Futási hiba 0/5017ms3228 KiB
// Source: https://usaco.guide/general/io

#include <bits/stdc++.h>
using namespace std;

vector<vector<int>> pref,v;
int dp[31][31][31][31];

int S(int b, int j, int f, int a){
    if(b>j||f>a)return 0;
    return pref[j][a]-pref[b-1][a]-pref[j][f-1]+pref[b-1][f-1];
}

int F(int b,int j, int f, int a){
	if(b>j||f>a)return 0;
	if(dp[b][j][f][a])return dp[b][j][f][a];
    int ossz=S(b,j,f,a),ans=0,w1=min({F(b+1,j,f,a),F(b,j-1,f,a),F(b,j,f+1,a),F(b,j,f,a-1)});
    ans=ossz-w1;
	dp[b][j][f][a]=ans;
	return ans;
}

int main() {
    int n,m;cin>>n>>m;
    v.resize(n+2,vector<int>(m+2));
    for(int i = 1;i<=n;i++){
        for(int j = 1;j<=m;j++){
            cin>>v[i][j];
        }
    }
    pref.resize(n+2,vector<int>(m+2));
    for(int i = 1;i<=n;i++){
        for(int j = 1;j<=m;j++){
            pref[i][j]=pref[i-1][j]+pref[i][j-1]+v[i][j]-pref[i-1][j-1];
        }
    }
    cout<<F(1,n,1,m)<<endl;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base0/50
1Futási hiba0/014ms3064 KiB
2Futási hiba0/014ms3052 KiB
3Futási hiba0/216ms2864 KiB
4Futási hiba0/216ms3056 KiB
5Futási hiba0/114ms2884 KiB
6Futási hiba0/116ms2888 KiB
7Futási hiba0/114ms2992 KiB
8Futási hiba0/216ms3036 KiB
9Futási hiba0/316ms3000 KiB
10Futási hiba0/317ms2876 KiB
11Futási hiba0/316ms2868 KiB
12Futási hiba0/317ms2868 KiB
13Futási hiba0/416ms2868 KiB
14Futási hiba0/417ms2884 KiB
15Futási hiba0/416ms2868 KiB
16Futási hiba0/514ms2868 KiB
17Futási hiba0/516ms3228 KiB
18Futási hiba0/514ms2900 KiB
19Futási hiba0/116ms2992 KiB
20Futási hiba0/114ms2960 KiB