본문으로 이동
코드패스 by Devin.KR

문제 4072 · 바이트 IV

원형 눈금의 관측 기록

인증 제출 통계 · 5분마다 갱신 · 정답 비율 = 정답 제출 / 전체 제출
시간 제한메모리 제한제출정답맞힌 사람정답 비율
1000ms / 테스트 (언어별 보정은 아래 표)메모리: 측정하지 않음(브라우저 채점)0000.00%

문제

한 천문대의 관측 장치에는 원형으로 배치된 M개의 눈금이 있다. 눈금에는 시계 방향으로 0부터 M−1까지 번호가 붙어 있으며, M−1번 눈금에서 시계 방향으로 한 칸 더 움직이면 0번 눈금에 도착한다. 장치는 처음에 0번 눈금을 가리킨다. 관측 담당자는 장치를 차례대로 회전시키며 N번의 관측을 진행한다. 각 관측 기록에는 회전량 D_i와 목표 눈금 T_i가 들어 있다. D_i가 양수이면 현재 위치에서 시계 방향으로 D_i칸 움직이고, 음수이면 반시계 방향으로 −D_i칸 움직인다. D_i가 0이면 움직이지 않는다. 회전량의 절댓값이 M 이상일 수도 있으며, 이때도 적힌 칸 수만큼 원을 따라 계속 움직인 것으로 처리한다. 회전이 끝난 위치는 다음 관측을 시작할 때의 위치가 된다. 장치는 정확히 목표 눈금을 가리키지 않아도 일정 범위 안에 있으면 관측에 성공한다. 두 눈금 사이의 원형 거리는 한 눈금에서 다른 눈금까지 시계 방향 또는 반시계 방향으로 움직일 때 필요한 칸 수 중 작은 값이다. i번째 회전을 모두 마친 뒤 장치가 가리키는 눈금과 T_i 사이의 원형 거리가 R 이하이면 i번째 관측은 성공이다. 거리가 정확히 R인 경우도 성공에 포함한다. 회전하는 도중 목표 눈금을 지났는지는 성공 여부에 영향을 주지 않는다. 담당자는 전체 성공 횟수와 가장 길게 연속하여 성공한 구간을 기록하려 한다. 연속 성공 구간은 관측 번호가 연속하고 그 안의 모든 관측이 성공인 구간이다. 길이가 같은 최장 구간이 여러 개라면 시작 관측 번호가 가장 작은 구간을 선택한다. 관측 번호는 1부터 시작한다. 관측에 한 번도 성공하지 않았다면 전체 성공 횟수와 최장 구간의 길이를 모두 0으로 기록하고, 구간의 시작 번호도 0으로 기록한다. 각 관측의 회전량과 목표 눈금이 주어졌을 때 전체 성공 횟수, 최장 연속 성공 구간의 길이, 선택한 구간의 시작 번호를 구하는 프로그램을 작성한다.

입력

첫째 줄에 관측 횟수 N, 눈금 수 M, 성공 허용 거리 R이 공백으로 구분되어 주어진다. 다음 N개 줄 중 i번째 줄에 D_i와 T_i가 공백으로 구분되어 주어진다. 모든 입력값은 정수이며 1≤N≤20,000, 2≤M≤360,000, 0≤R≤⌊M/2⌋, −360,000≤D_i≤360,000, 0≤T_i<M이다.

출력

전체 성공 횟수, 최장 연속 성공 구간의 길이, 그 구간의 시작 관측 번호를 이 순서대로 공백으로 구분하여 한 줄에 출력한다. 최장 구간이 여러 개이면 시작 번호가 가장 작은 것을 출력한다. 성공한 관측이 없으면 0 0 0을 출력한다.

예제 입력 1

4 12 1
2 3
4 8
-1 4
7 0

예제 출력 1

3 2 3

예제 입력 2

3 8 0
1 0
2 2
-3 1

예제 출력 2

0 0 0

예제 입력 3

5 10 0
-1 9
11 0
0 4
2 2
-2 0

예제 출력 3

4 2 1
힌트 펼치기
  • 회전 후 위치를 0 이상 M 미만으로 정리한다.
  • 두 위치의 차이가 d이면 원형 거리는 min(d, M−d)이다.

관련 서재 장

관련 장

출처: Devin.KR 자체 제작

알고리즘 분류구현시뮬레이션수학

풀이 작성

연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.

Python 기본 시간 제한 = 문제 시간 제한 × 3 + 2초. 문제별 예외는 아래 표에 반영됩니다. 표준 라이브러리만 지원합니다.

Ctrl+Enter: 연습 채점 · Tab: 들여쓰기 · Esc 후 Tab: 다음 요소로 이동. 언어별 초안은 이 브라우저에 저장됩니다. JavaScript 입력: require('fs').readFileSync(0, 'utf8'), readline 또는 input().

로그인하면 인증 제출을 사용할 수 있습니다.

풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.

    연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.

    이 브라우저의 연습 기록

      언어별 제한

      테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.

      언어엔진(버전)시간 제한메모리
      javascript사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름)1000ms / 테스트측정하지 않음(브라우저 채점)
      pythonPyodide 314.0.7 (CPython 3.14 WASM)5000ms / 테스트측정하지 않음(브라우저 채점)