제출 #1040872

#제출 시각아이디문제언어결과실행 시간메모리
1040872lovrot건포도 (IOI09_raisins)C++17
30 / 100
53 ms25920 KiB
#include <cstdio>
#include <cstring> 
#include <algorithm> 

#define debug(...) fprintf(stderr, __VA_ARGS__)

using namespace std;

typedef long long ll;

const int N = 51;
const int OO = 0x7FFFFFFF;

int n, m;
int sum[N][N];
int dp[N][N][N][N];

int main() { 
	scanf("%d%d", &n, &m);
	for(int i = 1; i <= n; ++i) { 
		for(int j = 1; j <= m; ++j) { 
			scanf("%d", &sum[i][j]);
			sum[i][j] += sum[i - 1][j] + sum[i][j - 1] - sum[i - 1][j - 1];
		}
	}

	for(int i = 1; i <= n; ++i) {
		for(int j = 1; j <= m; ++j) { 
			dp[i][j][i][j] = 0;
			for(int k = i; k > 0; --k) { 
				for(int l = j - (k == i); l > 0; --l) { 
					int &d = dp[i][j][k][l] = OO;

					for(int x = k; x < i; ++x) { 
						d = min(d, dp[i][j][x + 1][l] + dp[x][j][k][l]);	
					}

					for(int y = l; y < j; ++y) { 
						d = min(d, dp[i][j][k][y + 1] + dp[i][y][k][l]);	
					}

					d += sum[i][j] - sum[i][l - 1] - sum[k - 1][l] + sum[k - 1][l - 1];
//					printf("%d %d %d %d : %d\n", i, j, k, l, dp[i][j][k][l]);
				}
			}
		}
	}

	printf("%d\n", dp[n][m][1][1]);
	return 0;
}

컴파일 시 표준 에러 (stderr) 메시지

raisins.cpp: In function 'int main()':
raisins.cpp:19:7: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   19 |  scanf("%d%d", &n, &m);
      |  ~~~~~^~~~~~~~~~~~~~~~
raisins.cpp:22:9: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   22 |    scanf("%d", &sum[i][j]);
      |    ~~~~~^~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...