Submission #730150

#TimeUsernameProblemLanguageResultExecution timeMemory
730150lucriRaisins (IOI09_raisins)C++17
100 / 100
286 ms30020 KiB
#include <iostream> using namespace std; int n,m,a[55][55],pd[55][55][55][55]; int main() { 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=1;i<=n;++i) for(int j=1;j<=m;++j) for(int ii=1;ii<=n;++ii) for(int jj=1;jj<=m;++jj) pd[i][j][ii][jj]=1000000000; for(int l=1;l<=n;++l) for(int c=1;c<=m;++c) for(int i=1;i+l-1<=n;++i) for(int j=1;j+c-1<=m;++j) { int ii=i+l-1; int jj=j+c-1; if(i==ii&&j==jj) pd[i][j][ii][jj]=0; else { for(int iii=i+1;iii<=ii;++iii) pd[i][j][ii][jj]=min(pd[i][j][ii][jj],pd[i][j][iii-1][jj]+pd[iii][j][ii][jj]); for(int jjj=j+1;jjj<=jj;++jjj) pd[i][j][ii][jj]=min(pd[i][j][ii][jj],pd[i][j][ii][jjj-1]+pd[i][jjj][ii][jj]); pd[i][j][ii][jj]+=a[ii][jj]-a[i-1][jj]-a[ii][j-1]+a[i-1][j-1]; } } cout<<pd[1][1][n][m]; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...