RiseOJ는 solved.ac와 제휴 관계가 없습니다. 티어 아이콘 © solved.ac. solved.ac
포럼
R00383

칠하기와 지우기

Platinum IV 플래티넘 IV
난이도
2.500s
시간 제한
256MB
메모리 제한
0
맞았습니다!!
0
제출 수
0.0%
정답률
레이팅

의견: 0

설명

길이 \(N\)의 일렬로 늘어선 칸들이 있으며, 처음에는 모두 칠해지지 않은 상태다. 다음 연산을 처리한다.

  • 1 l r : 구간 \([l, r]\)의 모든 칸을 칠한다.
  • 2 l r : 구간 \([l, r]\)의 모든 칸의 칠을 지운다.
  • 3 l r : 구간 \([l, r]\) 안에서 현재 칠해져 있는 칸의 개수를 출력한다.

구간 대입(칠/지움)과 구간 개수 질의를 lazy 세그먼트 트리로 처리한다.

제약

\(1 \le N, Q \le 100{,}000\)
\(1 \le l \le r \le N\)

입력 형식

첫 줄에 \(N\), \(Q\).
이후 \(Q\)줄에 1 l r(칠하기), 2 l r(지우기), 3 l r(개수 질의).

출력 형식

타입 3 질의마다 칠해진 칸의 개수를 한 줄에 출력한다.

예제 1
입력
6 5
1 1 4
3 1 6
2 3 4
3 1 6
1 5 6
출력
4
2
설명

\([1,4]\)를 칠한 뒤 \([1,6]\)의 칠해진 칸은 4개. \([3,4]\)를 지우면 칠해진 칸은 1,2번뿐, \([1,6]\) 개수 2. 마지막 칠하기엔 질의 없음.

예제 2
입력
5 4
1 1 5
3 1 5
2 2 3
3 1 5
출력
5
3
설명

\([1,5]\) 전체를 칠하면 \([1,5]\) 개수 5. \([2,3]\)을 지우면 1,4,5번만 남아 \([1,5]\) 개수 3.

문제 정보

riseoj 작성

출처 Original

평가 및 의견

칠하기와 지우기

개요
출제자 난이도 Platinum IV 플래티넘 IV 의견 0 / 50 공개 집계 (커뮤니티 난이도, 주요 주제, 품질)는 의견이 충분히 모이면 공개됩니다.

Log in to rate problems.

개별 의견

아직 의견이 없습니다. 자격이 된다면 위 양식에서 가장 먼저 평가해 보세요.

풀이 제출

칠하기와 지우기

게스트로 둘러보고 있습니다. 로그인하면 풀이를 제출하고 진행 상황을 확인할 수 있습니다. 로그인하고 제출하기
공개
C++20 Tab 들여쓰기 · Ctrl+/ 주석 토글 · Enter 자동 들여쓰기
1 1 1 0 공백: 4 · UTF-8