제출 #1133722

#제출 시각아이디문제언어결과실행 시간메모리
1133722yellowtoad건포도 (IOI09_raisins)C++20
100 / 100
442 ms24772 KiB
#include <iostream> using namespace std; int n, m,dp[60][60][60][60], ps[60][60]; int solve(int x1, int y1, int x2, int y2) { if ((x1 == x2) && (y1 == y2)) return 0; if (dp[x1][y1][x2][y2]) return dp[x1][y1][x2][y2]; int minn = 1e9; for (int i = x1; i < x2; i++) minn = min(minn,solve(x1,y1,i,y2)+solve(i+1,y1,x2,y2)); for (int i = y1; i < y2; i++) minn = min(minn,solve(x1,y1,x2,i)+solve(x1,i+1,x2,y2)); return (dp[x1][y1][x2][y2] = minn+ps[x2][y2]-ps[x1-1][y2]-ps[x2][y1-1]+ps[x1-1][y1-1]); } int main() { cin >> n >> m; for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { cin >> ps[i][j]; ps[i][j] += ps[i][j-1]+ps[i-1][j]-ps[i-1][j-1]; } } cout << solve(1,1,n,m) << endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...