JuQueen

아직 제출이 없습니다시간 제한3초메모리 제한512 MB

문제

JuQueen은 독일에서 성능이 가장 좋은 슈퍼컴퓨터다. 코어 수는 458,752개이고 top500 목록에서 8위에 올라 있다. 소비 전력이 최대 2,301kW까지 올라가므로, 쓰이지 않는 코어의 클럭을 낮춰 전력을 줄이려고 한다.

작업을 노드와 코어에 나눠 배치하는 클러스터 스케줄러는 다음 세 가지 클럭 조정 명령을 내린다.

  • change X S: 코어 X의 주파수를 S단계만큼 바꾼다.
  • groupchange A B S: 구간 [A, B]에 속한 모든 코어의 주파수를 S단계만큼 바꾼다.
  • state X: 코어 X의 현재 단계를 알려준다.

더 큰 장비에도 쓸 수 있도록 프로그램은 코어 4,587,520개까지 처리해야 한다. 모든 코어의 처음 단계는 0이다.

입력

입력은 테스트 케이스 하나로 이루어진다. 첫 줄에 정수 C, N, O가 주어진다. C는 관리할 코어의 개수 (1C45875201 \le C \le 4587520), N은 코어 하나가 가질 수 있는 주파수 단계의 수 (1N100001 \le N \le 10000)이며, 따라서 각 코어의 단계는 0 이상 N 이하다. O는 테스트 프로그램에 담긴 명령의 개수 (1O500001 \le O \le 50000)다. 이어지는 O개의 줄에 위에서 설명한 명령이 한 줄에 하나씩 주어진다.

X, A, B는 0부터 시작하는 코어 번호로 0A,B,X<C0 \le A, B, X < C이고 ABA \le B다. S는 음수일 수도 있는 정수로 NSN-N \le S \le N이다.

change와 groupchange는 대상 코어의 단계를 1씩 올리거나 내리며, 대상 코어 가운데 하나가 최소 단계 0이나 최대 단계 N에 닿는 순간 멈춘다. groupchange는 구간에 속한 코어를 모두 함께 움직이므로, 구간 안의 코어 하나가 경계에 닿으면 나머지 코어도 그 자리에서 멈춘다.

출력

입력에 주어진 명령마다 한 줄씩 출력한다. change와 groupchange는 실제로 적용된 단계 수를 부호까지 포함해 출력한다. 한 단계도 움직이지 못했다면 0을 출력한다. state는 그 코어의 현재 단계를 출력한다.