코드포스 #623 A번 - Deal Pixel
a * b 픽셀의 모니터가 있다. 모니터 위 (x, y)좌표에 죽은 픽셀이 있다. Polycarp는 죽은 픽셀이 포함되지 않은 최대 크기의 직사각형을 구하려고 한다. 그때의 직사각형의 크기를 출력하시오.
먼저 문제를 그림으로 생각해보자.
그림과 같이 고장난 부분이 있다면, 직사각형의 최대 크기는, 고장난 부분을 기준으로 상/하/좌/우에 있는 네개의 직사각형의 크기 중 최대값일 것이다. 즉,
색칠한 네개의 직사각형의 크기중 최댓값을 출력하면 된다.
아래는 제출코드이다.
#include <bits/stdc++.h>
// 2의 제곱수 판정
#define POW2(X) (X) == ((X)&(-(X)))
// 기본설정
typedef long long ll;
using namespace std;
int dirx[4] = {1, 0, -1, 0};
int diry[4] = {0, 1, 0, -1};
// 전역변수
int main(void) {
cin.tie(NULL);
ios_base::sync_with_stdio(false);
int tc;
cin >> tc;
while(tc--) {
int a, b, x, y, ans = 0;
cin >> a >> b >> x >> y;
ans = max( max(x*b, y*a), max((a - (x + 1))*b, (b - (y + 1)) * a));
cout << ans << "\n";
}
return 0;
}
'코드포스_Code Forces > 개별문제풀이' 카테고리의 다른 글
[코드포스/개별문제] CF#623 C번 Restoring Permutation (0) | 2020.06.24 |
---|---|
[코드포스/개별문제] CF#623 B번 Homecoming (0) | 2020.06.24 |