화면 보호기
시간 제한2초메모리 제한128 MB
구간별 직선으로 된 바닥과 수면 높이가 주어질 때, 바닥 높이나 수면 높이를 갱신하며 잠긴 영역의 넓이를 소수점 세 자리까지 구한다.
문제
상근이는 새 화면 보호기를 설치했다. 컴퓨터를 분 동안 사용하지 않으면 화면 보호기가 실행되어, 수족관과 그 안에서 헤엄치는 물고기를 보여 준다. 설정 화면에서는 수족관 바닥의 모양과 수면의 높이를 바꿀 수 있다.
수족관은 너비가 인 2차원 평면으로 나타낸다. 가장 왼쪽 좌표는 , 가장 오른쪽 좌표는 이고, 각 정수 좌표 에는 바닥의 높이 가 정해져 있다. 바닥은 인접한 두 좌표 와 에 대해 점 와 을 잇는 선분으로 이루어진다.
수면의 높이가 이면 바닥과 직선 사이의 공간이 모두 물로 채워진다. 바닥이 보다 높은 부분은 물에 잠기지 않는 섬이 된다.
상근이가 설정에서 바닥의 높이나 수면의 높이를 바꿀 때마다, 그 순간 물로 채워지는 영역의 넓이를 구하려고 한다.
입력
첫째 줄에 두 양의 정수 과 이 주어진다. 은 상근이가 설정을 바꾼 횟수이다. (, )
둘째 줄에는 바닥의 초기 높이 이 공백으로 구분되어 주어진다. ()
다음 개의 줄에는 상근이가 바꾼 내용이 한 줄에 하나씩 주어지며, 형식은 다음 두 가지 중 하나이다.
Q h: 수면의 높이를 로 바꾼다. ()U i h: 좌표가 인 곳의 바닥 높이를 로 바꾼다. 즉 가 된다. (, )
출력
Q로 시작하는 변경이 주어질 때마다, 그 순간 물로 채워지는 영역의 넓이를 소수점 셋째 자리까지 출력한다.