RiseOJ는 solved.ac와 제휴 관계가 없습니다. 티어 아이콘 © solved.ac. solved.ac
포럼
문제 KOI00156

화살표 그리기

설명

직선위에 \(N\)개의 점들이 주어지고 각 점은 \(N\)개의 색깔 중 하나를 가진다. 편의상, 색깔은 1부터 \(N\)까지의 수로 표시 하고, 점들의 좌표는 모두 다르다.

각 점 \(p\)에 대해서, \(p\)에서 시작하는 직선 화살표를 이용해서 다른 점 \(q\)에 연결하려고 한다. 여기서, 점 \(q\)\(p\)와 같은 색깔의 점들 중 \(p\)와 거리가 가장 가까운 점이어야 한다. 만약 가장 가까운 점이 두 개 이상이면 아무거나 하나를 선택한다.

각 점 \(p\)에서 시작하여 위 조건을 만족하는 \(q\)로 가는 하나의 화살표 \(\vec{\ell_{p}}\)를 그린다. 특별히 점 \(p\)에 대해서 수평선 상에 같은 색깔의 다른 점이 없다면 $\left|\vec{\ell_{p}}\$right|=0. 여기서 \(\left|\vec{\ell_{p}}\right|\)는 화살표 \(\vec{\ell_{p}}\)의 길이를 나타낸다.

예를 들어, 점들을 순서쌍 (좌표, 색깔) 로 표시할 때, \(p_1\) = (0, 1), \(p_2\) = (1, 2), \(p_3\) = (3, 1), \(p_4\) = (4, 1)라고 하자. 점 \(p_1\)의 화살표 \(\left|\vec{\ell_{p_1}}\right|\)\(p_1\rightarrow p_3\) 로 연결된다. 점 \(p_3\)\(p_4\)의 화살표 \(\left|\vec{\ell_{p_3}}\right|\)\(\left|\vec{\ell_{p_4}}\right|\)는 각각 \(p_3\rightarrow p_4\)\(p_4\rightarrow p_3\)로 연결된다. 점 \(p_2\)의 경우는 같은 색깔의 다른 점이 존재하지 않는다. 따라서 모든 화살표들의 길이 합은 $\left|\vec{\ell_{p_1}}\right|+\left|\vec{\ell_{p_2}}\right|+\left|\vec{\ell_{p_3}}\right|+\left|\vec{\ell_{p_4}}\$right|=3\(+0+1+\)1=5이다.

점들의 좌표와 색깔이 주어질 때, 모든 점에서 시작하는 화살표들의 길이 합, 다시 말해서, \(\displaystyle\sum_{p}\left|\vec{\ell_{p}}\right|\)을 출력하는 프로그램을 작성하시오.

※ 이 문제의 채점 데이터는 공개된 공식 데이터가 없어 재구성한 것입니다. 문제 지문은 원본(정보올림피아드 기출)을 따릅니다.

제약
입력 형식

표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 점들의 개수를 나타내는 정수 \(N\)이 주어진다. 다음 \(N\)개의 줄 각각에는 점의 좌표와 색깔을 나타내는 두 정수 \(x\)\(y\)가 주어진다.

출력 형식

표준 출력으로 모든 점에서 시작하는 화살표들의 길이 합을 출력한다.

예제 1
입력
4
0 1
1 2
3 1
4 1
출력
5
예제 2
입력
4
1 1
0 2
4 3
3 4
출력
0
예제 3
입력
9
10 2
11 3
20 2
22 1
25 1
0 1
4 2
5 2
7 2
출력
45
문제 정보

생성자가 기록되지 않았습니다.

출처 올림피아드 > 한국정보올림피아드 > KOI 2018 > 2차 대회 > 고등부 1번

평가 및 의견

화살표 그리기

개요
출제자 난이도 Unrated 레이팅 미적용 의견 0 / 50 공개 집계 (커뮤니티 난이도, 주요 주제, 품질)는 의견이 충분히 모이면 공개됩니다.

Log in to rate problems.

개별 의견

아직 의견이 없습니다. 자격이 된다면 위 양식에서 가장 먼저 평가해 보세요.

풀이 제출

화살표 그리기

게스트로 둘러보고 있습니다. 로그인하면 풀이를 제출하고 진행 상황을 확인할 수 있습니다. 로그인하고 제출하기
공개
C++20 Tab 들여쓰기 · Ctrl+/ 주석 토글 · Enter 자동 들여쓰기
1 1 1 0 공백: 4 · UTF-8