[백준 1451번] 직사각형으로 나누기
2017. 10. 11. 01:13ㆍ알고리즘/백준
반응형
소스코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | #include <iostream> using namespace std; int n, m, a[101][101]; long long Max = 0; long long sum(int sx, int sy, int ex, int ey) { long long ret = 0; for (int i = sy; i <= ey; i++) { for (int j = sx; j <= ex; j++) { ret += a[i][j]; } } return ret; } int main() { cin >> n >> m; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { char tmp; cin >> tmp; a[i][j] = tmp-'0'; } } // 1번 case for (int i = 0; i < m-2; i++) { for (int j = i + 1; j < m - 1; j++) { long long a = sum(0, 0, i, n - 1); long long b = sum(i+1, 0, j, n - 1); long long c = sum(j+1, 0, m - 1, n-1); if (Max < a*b*c) Max = a*b*c; } } // 2번 case for (int i = 0; i < n - 2; i++) { for (int j = i + 1; j < n - 1; j++) { long long a = sum(0, 0, m-1, i); long long b = sum(0, i+1, m-1, j); long long c = sum(0, j+1, m - 1, n - 1); if (Max < a*b*c) Max = a*b*c; } } // 3번 case for (int i = 0; i < m - 1; i++) { for (int j = 0; j < n - 1; j++) { long long a = sum(0, 0, i, n-1); long long b = sum(i+1,0,m-1,j); long long c = sum(i+1,j+1,m-1,n-1); if (Max < a*b*c) Max = a*b*c; } } // 4번 case for (int i = m-1; i > 0; i--) { for (int j = 0; j < n - 1; j++) { long long a = sum(i,0,m-1,n-1); long long b = sum(0,0,i-1,j); long long c = sum(0,j+1,i-1,n-1); if (Max < a*b*c) Max = a*b*c; } } // 5번 case for (int i = 0; i < n - 1; i++) { for (int j = 0; j < m - 1; j++) { long long a = sum(0,0,m-1,i); long long b = sum(0,i+1,j,n-1); long long c = sum(j+1,i+1,m-1,n-1); if (Max < a*b*c) Max = a*b*c; } } // 6번 case for (int i = n-1; i > 0; i--) { for (int j = 0; j < m - 1; j++) { long long a = sum(0,i,m-1,n-1); long long b = sum(0,0,j,i-1); long long c = sum(j+1,0,m-1,i-1); if (Max < a*b*c) Max = a*b*c; } } cout << Max << '\n'; return 0; } | cs |
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[백준 3085번] 사탕 게임 (0) | 2017.10.12 |
---|---|
[백준 1600번] 말이 되고픈 원숭이 (0) | 2017.10.12 |
[백준 1331번] 나이트 투어 (0) | 2017.10.08 |
[백준 3980번] 선발 명단 (0) | 2017.10.06 |
[백준 2503번] 숫자 야구 (0) | 2017.10.05 |