포럼
문제 COCI00108

Slicice

스페셜 저지 — 출력을 사용자 정의 프로그램으로 검사하므로 여러 정답이 인정될 수 있습니다.
설명

수영장이 터진 뒤, Mirko와 Slavko는 카드를 모으기 시작했다. 이들의 동네에서는 카드 수집을 진지하게 여겨서, 카드의 구매와 교환에 엄격한 규칙이 있다.
카드 구매는 항상 두 아이가 함께 한다. 각자 필요한 금액의 절반씩을 내고 카드 두 장을 산다. 그런 다음 시내 분수까지 달리기 경주를 해서 이긴 아이가 두 장을 모두 가진다. 정확히 동시에 도착하면 각자 한 장씩 가진다.
처음에는 규칙이 잘 지켜지는 듯했지만, 곧 일부 아이들이 이런 구매만으로는 가질 수 없는 카드를 갖고 있다는 의혹이 제기되기 시작했다.
어느 날 모든 아이들이 모여 부정이 있었는지 확인하기로 했다. 아이들은 각자 현재 갖고 있는 카드의 정확한 개수에 대해서는 합의할 수 있었다. 또한 누가 누구와 함께 가게에 갔는지에 대한 부분적인 목록도 만들었지만, 각 경주에서 누가 이겨서 카드를 가져갔는지는 알지 못한다.
모든 구매에 누가 참여했고 그 뒤의 경주에서 누가 이겼는지를 결정하여, 모든 구매가 끝난 뒤의 카드 개수가 주어진 개수와 일치하도록 하는 프로그램을 작성하시오.
구매가 시작되기 전에는 아이들이 카드를 한 장도 갖고 있지 않았다고 가정한다.
가능한 해가 여러 개라면 아무거나 하나 출력한다.

제약
입력 형식

첫째 줄에 정수 \(N\)\(M\) (\(1 \le N \le 100\), \(0 \le M \le 1000\))이 주어진다. 아이의 수와 아이들이 기억하는 구매의 횟수이다. 아이들에게는 \(1\)부터 \(N\)까지 번호가 붙어 있다.

둘째 줄에 \(N\)개의 정수가 주어진다. 각 아이가 현재 갖고 있는 카드의 개수이다.

다음 \(M\)개의 줄에는 각각 두 정수가 주어진다. 해당 구매를 한 두 아이의 번호이다.

출력 형식

첫째 줄에 전체 구매 횟수를 출력한다.

다음 각 줄에는 구매를 하나씩 설명한다. 구매의 설명은 세 수로 이루어진다: 구매를 한 두 아이의 번호와, 경주 후 첫 번째 아이가 받은 카드의 개수인 \(0\), \(1\) 또는 \(2\)이다.

참고: 해는 항상 존재하지만 유일하지 않을 수 있다. 전체 구매 횟수는 최대 \(1000\)이다.

서브태스크
서브태스크점수설명

Subtask 1

130점
예제 1
입력
2 3
5 1
1 2
1 2
1 2
출력
3
1 2 1
1 2 2
1 2 2
예제 2
입력
4 3
5 3 1 1
1 3
2 3
4 1
출력
5
1 3 1
2 3 2
4 1 0
2 4 1
1 3 2
예제 3
입력
5 0
3 0 2 4 1
출력
5
1 2 2
1 3 1
4 2 2
3 4 0
3 5 1
문제 정보

riseoj 작성

출처 COCI 2008/2009 Contest 6

평가 및 의견

Slicice

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

Log in to rate problems.

개별 의견

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

풀이 제출

Slicice

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