본문 바로가기

코드포스_Code Forces/개별문제풀이

[코드포스/개별문제] CF#623 A번 Dead Pixel

클릭하면 코드포스 페이지로 이동합니다.


코드포스 #623 A번 - Deal Pixel

a * b 픽셀의 모니터가 있다. 모니터 위 (x, y)좌표에 죽은 픽셀이 있다. Polycarp는 죽은 픽셀이 포함되지 않은 최대 크기의 직사각형을 구하려고 한다. 그때의 직사각형의 크기를 출력하시오.

먼저 문제를 그림으로 생각해보자.

CF#623 A번

그림과 같이 고장난 부분이 있다면, 직사각형의 최대 크기는, 고장난 부분을 기준으로 상/하/좌/우에 있는 네개의 직사각형의 크기 중 최대값일 것이다. 즉,

CF#623 A번

색칠한 네개의 직사각형의 크기중 최댓값을 출력하면 된다.

 

아래는 제출코드이다.

#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;
}