알고리즘 모음(C++)

백준 9063 - 대지(C++) 본문

백준

백준 9063 - 대지(C++)

공대생의 잡다한 사전 2023. 12. 9. 23:39

문제 링크입니다. https://www.acmicpc.net/problem/9063

9063번: 대지

첫째 줄에는 점의 개수 N (1 ≤ N ≤ 100,000) 이 주어진다. 이어지는 N 줄에는 각 점의 좌표가 두 개의 정수로 한 줄에 하나씩 주어진다. 각각의 좌표는 -10,000 이상 10,000 이하의 정수이다. 

www.acmicpc.net

주어진 점들로 최소 넓이의 직사각형을 구하는 문제입니다.

점들이 N개 주어졌을 때, 모든 점들을 포함하는 최소 넓이의 직사각형을 구하는 문제입니다.

좌표가 들어올 때마다, 직사각형의 X좌표 시작점과 끝점, Y좌표 시작점과 끝점과 계속 비교해 값을 갱신해 나가면 됩니다.


자세한 것은 코드를 참고해주세요.

#define _CRT_SECURE_NO_WARNINGS
#include <cstring>
#include <vector>
#include <iostream>
#include <algorithm>
#include <queue>
#include <cmath>
#include <cstdio>
#include <string>
#define INF 987654321

using namespace std;

int N;
int min_x = INF, min_y = INF, max_x = -INF, max_y = -INF;

int main() {
	cin.tie(0);
	cout.tie(0);
	cin >> N;
	for(int i = 1; i <= N; i++){
		int x, y;
		cin >> x >> y;
		if(min_x > x) min_x = x;
		if(min_y > y) min_y = y;
		if(max_x < x) max_x = x;
		if(max_y < y) max_y = y;
	}		
	cout << (max_x - min_x) * (max_y - min_y);
	return 0;
}


질문 및 조언은 댓글을 남겨주세요.