관객 수 구간
문제
한 거리 공연 팀은 지금까지 공연을 N회 했고, 회차마다 공연을 본 관객의 수를 적어 두었다. 적어 둔 기록은 1회차부터 N회차까지 차례대로 주어진다.
팀은 연속한 X회차를 하나의 구간으로 묶어서 지난 공연을 돌아보려고 한다. 예를 들어 X가 3이라면 1회차부터 3회차까지, 2회차부터 4회차까지, 3회차부터 5회차까지, 이렇게 X회차씩 이어진 구간을 모두 생각한다.
팀은 이 가운데 구간에 속한 관객 수의 합이 가장 많은 구간을 찾으려고 한다. 합이 가장 많은 구간이 여러 개일 수도 있으므로 그런 구간이 몇 개인지도 함께 세려고 한다.
연속한 X회차의 관객 수 합이 가장 많은 값과 그 값을 가지는 구간의 개수를 계산하는 프로그램을 작성하여라.
예를 들어 N=7, X=3인 상황을 가정하자. 각 회차의 관객 수가 다음의 표와 같다고 해보자.
| 회차 | 1회차 | 2회차 | 3회차 | 4회차 | 5회차 | 6회차 | 7회차 |
|---|---|---|---|---|---|---|---|
| 관객 수 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
연속한 3회차로 묶을 수 있는 구간은 모두 5개다. 각 구간의 관객 수 합을 정리하면 다음의 표와 같다.
| 구간 | 1회차부터 3회차 | 2회차부터 4회차 | 3회차부터 5회차 | 4회차부터 6회차 | 5회차부터 7회차 |
|---|---|---|---|---|---|
| 관객 수의 합 | 6 | 9 | 12 | 15 | 18 |
가장 많은 합은 18이고, 합이 18인 구간은 5회차부터 7회차까지 하나뿐이다. 따라서 현재 예시에서의 정답은 18과 1이다.
합이 가장 많은 구간이 여러 개인 경우도 생각해 보자. N=5, X=1이고 각 회차의 관객 수가 모두 3이라고 해보자.
| 회차 | 1회차 | 2회차 | 3회차 | 4회차 | 5회차 |
|---|---|---|---|---|---|
| 관객 수 | 3 | 3 | 3 | 3 | 3 |
X가 1이므로 구간은 회차 하나하나가 되고 구간의 수는 5개다. 모든 구간의 합이 3이라서 가장 많은 합도 3이다. 합이 3인 구간이 5개이므로 이때의 정답은 3과 5다.
X가 N과 같은 경우도 있다. 이때는 1회차부터 N회차까지를 묶은 구간 하나만 생각할 수 있으므로, 모든 회차의 관객 수를 더한 값과 구간의 개수 1이 답이 된다.
한편 모든 회차의 관객 수가 0이어서 가장 많은 합도 0이 되는 경우가 있다. 이때는 합과 구간의 개수를 적는 대신 SAD를 출력한다.
입출력 예시
예시 1
입력
7 3 1 2 3 4 5 6 7
출력
18 1
예시 2
입력
5 2 0 0 0 0 0
출력
SAD
예시 3
입력
5 3 10 82 68 74 56
출력
224 1
입력 조건
가장 먼저 첫째 줄에 공연 회차의 수 N과 한 구간에 묶을 회차의 수 X가 공백으로 구분되어 주어진다. N은 1 이상 250,000 이하의 자연수이며, X는 1 이상 N 이하의 자연수다.
이어서 둘째 줄에 1회차부터 N회차까지의 관객 수가 공백으로 구분되어 차례대로 주어진다. 각 관객 수는 0 이상 100 이하의 정수다.
출력 조건
첫째 줄에 연속한 X회차의 관객 수 합이 가장 많은 값을 출력한다. 이어서 둘째 줄에 그 값을 가지는 구간의 개수를 출력한다.
다만 가장 많은 합이 0인 경우, 즉 모든 회차의 관객 수가 0인 경우에는 두 줄을 적는 대신 SAD 한 줄만 출력한다.
요구사항
- 구간은 연속한 X회차로만 묶습니다. 길이가 X가 아닌 구간은 세지 않습니다
- 구간의 개수는 합이 가장 많은 값과 같은 구간의 수를 뜻합니다
- 가장 많은 합이 0이면 SAD 한 줄만 출력합니다
- X는 N보다 크지 않습니다
- 표준 입력으로 읽고 표준 출력으로 내보내는 프로그램을 짜야 합니다
- 쓸 수 있는 말은 파이썬, 자바스크립트입니다
- 메모리 제한은 256MB입니다. 브라우저에서는 재지 않고 적기만 합니다
- 시간 제한은 출제자의 정답 코드를 같은 런타임에서 재서 정합니다
- 이 문제는 프롬프트가 아니라 코드를 냅니다. 그 코드는 이 기기의 브라우저에서 돌고, 서버로는 나온 출력의 지문과 걸린 시간만 갑니다. 맞았는지는 서버가 정합니다. 실행 시간은 각자 기기가 적어 보내는 값이라, 코드와 기기 정보를 순위표에 같이 내걸어 둡니다.
- 출력이 글자 하나까지 기대값과 같아야 합니다. 줄 안의 빈칸은 다른 글자와 똑같이 봅니다.
- 케이스는 16개이고, 그 가운데 3개는 입력과 기대 출력을 함께 보여 줍니다. 나머지는 제출할 때만 쓰이고 화면에는 보여 주지 않습니다.
- 케이스 16개를 전부 통과해야 해결입니다.
예시
공개 케이스 3개입니다. 채점에는 숨은 케이스가 함께 쓰입니다. 케이스 16개를 전부 통과해야 해결입니다.
5 3 10 82 68 74 56
224 1
7 3 1 2 3 4 5 6 7
18 1
5 2 0 0 0 0 0
SAD
풀이
코드는 이 기기에서돕니다. 서버로는 나온 출력의 지문과 걸린 시간만 갑니다. 맞았는지는 서버가 정합니다.
제출은 로그인 하셔야 됩니다. 공개 케이스로 돌려보는 것은 로그인 없이도 됩니다.
공개 케이스 3개로 돌려보기가 됩니다. 제출하면 숨은 케이스까지 돕니다.
이 문제를 푼 사람
아직 없습니다. 첫 번째가 되실 수 있습니다.