[BOJ 12856] 홍준이는 색칠을 좋아해

View as PDF

Submit solution

Points: 5
Time limit: 2.0s
Memory limit: 512M

Problem types
Allowed languages
Assembly, Awk, C, C++, Java, Pascal, Perl, Python, Sed, Text

홍준이는 색칠을 좋아해요.</p>

홍준이는 생일 선물로 n개의 벽돌을 선물 받았고 일렬로 늘어놓았습니다. 편의상 가장 왼쪽의 벽돌이 1번 벽돌이고 가장 오른쪽의 n번 벽돌까지 순서대로 있다고 하겠습니다. i번 벽돌의 색은 처음에 i번 색깔이었습니다. 그리고 각 벽돌의 ‘다채도’는 0이었습니다.

색칠을 좋아하는 홍준이는 이제 연속한 벽돌들에 같은 색을 칠하려고 합니다. i번 벽돌의 색이 현재 y이고, 홍준이가 x라는 색으로 칠하려고 한다면, 그 돌의 다채도는 |x-y|만큼 증가하게 됩니다.

홍준이는 m번의 작업을 합니다. 작업은 다음 두 가지 중 하나입니다.

  1. L번째 벽돌부터 R번째 벽돌까지 색깔 X로 칠합니다.
  2. L번째 벽돌부터 R번째 벽돌까지의 다채도의 합을 구합니다.

홍준이를 도와주는 프로그램을 작성하세요.

입력 형식

첫째 줄에 벽돌의 개수를 나타내는 n과 작업의 수 m이 주어집니다. (1 ≤ n, m ≤ 100,000)</p>

둘째 줄부터 m개의 줄은 작업의 종류를 알려주는 하나의 정수 Type(1 또는 2)으로 시작한다.

Type이 1이라면, 작업 1을 나타내는 3개의 정수 L, R, X가 주어진다. (1 ≤ L ≤ R ≤ n, 1 ≤ X ≤ 100,000,000)

Type이 2라면, 작업 2를 나타내는 2개의 정수 L, R이 주어진다. (1 ≤ L ≤ R ≤ n)

출력 형식

작업 2를 수행할 때마다 구간의 다채도의 합을 한 줄에 하나씩 순서대로 출력합니다.

예제 입력

3 4
1 1 3 4
2 1 1
2 2 2
2 3 3

예제 출력

3
2
1

Comments

There are no comments at the moment.