바트와 리사 심슨은 집안일을 여러 개 맡지만 늘 제대로 하지는 않는다. 그래서 아빠는 집안일을 제대로 끝냈을 때만 점수를 주기로 하고 기록을 남겼다. 한 달이 지나자 아빠가 두 사람에게 그 기록을 보여 주었다.
첫째 달에 일을 맡긴 순서대로 적으면 이렇다.
| 담당 | Bart | Bart | Bart | Lisa | Lisa | Lisa | Bart |
|---|---|---|---|---|---|---|---|
| 제대로 했는지 | 1 | 0 | 1 | 0 | 1 | 1 | 1 |
바트는 맡은 4개 중 3개를 제대로 해서 75.00%, 리사는 3개 중 2개를 제대로 해서 66.67%다.
둘째 달 기록은 이렇다.
| 담당 | Bart | Bart | Lisa | Lisa | Lisa | Lisa | Lisa | Lisa | Lisa |
|---|---|---|---|---|---|---|---|---|---|
| 제대로 했는지 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 0 | 0 |
바트는 2개 중 1개로 50.00%, 리사는 7개 중 3개로 42.86%다.
아빠는 두 달 비율을 이렇게 정리해 놓고 바트가 집안일을 제일 많이 한다고 주장했다.
| 첫째 달 | 둘째 달 | 계산 | 합계 | |
|---|---|---|---|---|
| Bart | 75.00% | 50.00% | 125.00 / 234.53 | 53.30% |
| Lisa | 66.67% | 42.86% | 109.53 / 234.53 | 46.70% |
표를 본 리사가 말했다. "아니야, 그건 틀렸어. 내가 더 많이 했다고." 바트는 숫자를 가리키며 "숫자는 거짓말 안 해"라고 받아쳤다. 리사가 다시 말했다. "잘 봐. 나는 5개를 해냈고 오빠는 4개밖에 못 했어. 오빠는 누가 일을 시키기 전에 늘 도망가니까 비율만 좋아 보이는 거야." 바트는 웃으며 도망갔다.
이제 리사에게는 이 평가가 얼마나 불공평한지 보여 줄 프로그램이 필요하다. 집안일 기록 전체를 받아서, 기록을 앞부분과 뒷부분으로 자를 때 두 부분이 모두 기록 전체와 반대 결론을 가리키는 지점을 모두 찾아야 한다. 공정하게 따지려고, 자른 자리의 앞뒤 양쪽에 바트의 일과 리사의 일이 모두 있는 경우만 센다.
정리하면 이렇다. 기록에는 집안일 N개가 맡긴 순서대로 1번부터 N번까지 들어 있다. 기록 전체에서 바트가 제대로 끝낸 개수를 CB, 리사가 제대로 끝낸 개수를 CL이라고 하자. 두 값이 다르면 더 큰 쪽이 기록 전체의 결론이다. k번 집안일 뒤에서 자르면(1≤k<N) 기록은 1번부터 k번까지의 앞부분과 k+1번부터 N번까지의 뒷부분으로 나뉜다. 앞부분과 뒷부분 모두에 바트의 일과 리사의 일이 하나 이상 있을 때만 그 자리를 센다. 한 부분에서 어떤 사람의 비율은 그 부분에서 제대로 끝낸 개수를 그 부분에서 맡은 개수로 나눈 뒤 100을 곱한 값이다. 기록 전체의 결론이 가리키는 사람의 비율이 두 부분 모두에서 상대보다 낮으면, 그 자리는 전체 결론을 뒤집는다.
입력에는 기록이 여러 개 들어온다. 각 기록의 첫 줄에는 집안일의 개수 N이 주어진다(2≤N≤50000). 이어지는 N개 줄에는 각각 Bart 또는 Lisa와 0 또는 1이 공백 하나를 사이에 두고 주어진다. 이름은 그 집안일을 맡은 사람이고, 숫자는 제대로 끝냈으면 1, 아니면 0이다. 모든 기록에는 바트의 일과 리사의 일이 하나 이상씩 있다. 입력의 마지막 줄에는 기록 대신 0이 주어진다.
기록마다 첫 줄에 기록 번호와 두 사람이 제대로 끝낸 개수를 출력한다.
Case <case number>: Bart did <CB> and Lisa did <CL>
CB와 CL이 같으면 뒤집을 결론이 없으므로 다음 줄에 아래 문장을 출력한다.
Bart and Lisa accomplished same number of chores
두 값이 다르면 셀 수 있는 자리를 모두 살핀다. 전체 결론을 뒤집는 자리가 하나도 없으면 다음 줄에 아래 문장을 출력한다.
Simpson's paradox not detected
뒤집는 자리가 하나라도 있으면 다음 줄에 아래 문장을 출력하고,
Trend measured in 2 parts is reversed
이어서 뒤집는 자리마다 한 줄씩, 집안일 번호가 작은 것부터 출력한다.
After chore <chore number>: <BBefore>% <LBefore>% <BAfter>% <LAfter>%
BBefore와 LBefore는 1번부터 자른 자리까지에서 바트와 리사의 비율이고, BAfter와 LAfter는 나머지 부분에서 두 사람의 비율이다. 비율은 모두 소수점 아래 넷째 자리까지 출력한다. 값이 넷째 자리 두 눈금의 정확히 가운데면 큰 쪽으로 올린다. 기록 두 개의 출력 사이에는 빈 줄을 하나 넣는다.
리사가 원하는 프로그램은 앞부분과 뒷부분의 비율이 기록 전체와 반대 결론을 가리키는 자리를 보여 주는 것이므로, 출력했을 때 같은 값이 되는 두 비율은 차이가 없는 것으로 본다. 앞부분의 두 비율이 같은 값으로 출력되거나 뒷부분의 두 비율이 같은 값으로 출력되는 자리는 세지 않는다.