본문 바로가기

코드포스

[Codeforces Round #812 (Div. 2)] A. Traveling Salesman Problem

 

 


※ x y 중 하나는 0 이다. (x축 또는 y축에 있는 점)

※ 상하좌우 (0,0)에서 가장 멀리 있는 점의 좌표를 구하면 된다. (가장 멀리 있는 점에 접근할 때 그 전에 있는 점들은 무조건 방문된다.)

 


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.StringTokenizer;
 
public class Main {
	public static void main(String[] args) throws IOException{
		// TODO Auto-generated method stub
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
		int T  = Integer.parseInt(br.readLine());
		while(T -- > 0) {
			int n = Integer.parseInt(br.readLine());
			int maxX = 0, maxY = 0, minX = 0, minY= 0;
			for(int i = 0; i < n; i++) {
				StringTokenizer st = new StringTokenizer(br.readLine(), " ");
				int x = Integer.parseInt(st.nextToken());
				int y = Integer.parseInt(st.nextToken());
				maxX = Math.max(x, maxX);
				maxY = Math.max(y, maxY);
				minX = Math.min(x, minX);
				minY = Math.min(y, minY);
			}
			int ans = 2 * ((maxX + maxY) - (minX + minY));
			sb.append(ans).append('\n');
		}
		System.out.println(sb);
	}
}