못 (Nails)

시간 제한1초메모리 제한128 MB

요약
한 변에 못이 N개씩 있는 삼각 격자에서 최대 500000개의 위쪽 방향 삼각형이 주어질 때, 하나 이상의 삼각형에 포함되는 못의 개수를 센다.
난이도

보통10점 중 7점

유형
배열, 누적 합, 구현, 기하
정답자
아직 제출이 없습니다

문제

JOI 군은 판에 못을 박으며 놀고 있다. JOI 군은 한 변에 NN개의 못이 놓이도록 못을 정삼각형 모양으로 배치했다. 위에서 aa번째 줄(1≤a≤N1 \le a \le N)에는 aa개의 못이 있으며, 그중 왼쪽에서 bb번째(1≤b≤a1 \le b \le a) 못을 (a,b)(a, b)로 나타낸다.

세 못을 꼭짓점으로 하는 정삼각형이 전체 정삼각형의 세 변과 각각 평행하고 전체 정삼각형과 같은 방향을 향하면, 이 삼각형을 좋은 정삼각형이라고 부른다. 즉 좋은 정삼각형이란 세 못 (a,b)(a, b), (a+x,b)(a + x, b), (a+x,b+x)(a + x, b + x)를 꼭짓점으로 하는 정삼각형이다(단, 1≤a<N1 \le a < N, 1≤b≤a1 \le b \le a, 1≤x≤N−a1 \le x \le N - a).

JOI 군은 고무줄로 좋은 정삼각형의 둘레를 감싸려고 한다. 하나의 좋은 정삼각형을 감싼 고무줄은 그 삼각형의 내부와 경계에 있는 모든 못을 감싼다.

한 변에 놓인 못의 개수 NN, 고무줄의 개수 MM, 그리고 각 고무줄이 감싸는 좋은 정삼각형이 주어질 때, 한 개 이상의 고무줄에 감싸인 못의 개수를 구하는 프로그램을 작성하여라.

입력

첫째 줄에 두 정수 NN과 MM이 공백으로 구분되어 주어진다. NN은 정삼각형 한 변에 놓인 못의 개수이고, MM은 고무줄의 개수이다.

다음 MM개의 줄에는 각 고무줄이 감싸는 좋은 정삼각형의 정보가 주어진다. ii번째 줄(1≤i≤M1 \le i \le M)에는 세 정수 AiA_i, BiB_i, XiX_i(1≤Ai<N1 \le A_i < N, 1≤Bi≤Ai1 \le B_i \le A_i, 1≤Xi≤N−Ai1 \le X_i \le N - A_i)가 공백으로 구분되어 주어진다. 이는 ii번째 고무줄이 세 못 (Ai,Bi)(A_i, B_i), (Ai+Xi,Bi)(A_i + X_i, B_i), (Ai+Xi,Bi+Xi)(A_i + X_i, B_i + X_i)를 꼭짓점으로 하는 좋은 정삼각형을 감싸고 있음을 뜻한다.

출력

한 개 이상의 고무줄에 감싸인 못의 개수를 한 줄에 출력하여라.

제한

  • 2≤N≤50002 \le N \le 5000 : 한 변에 놓인 못의 개수
  • 1≤M≤5000001 \le M \le 500000 (=5×105= 5 \times 10^5) : 고무줄의 개수

힌트

좋은 정삼각형 (a,b)(a, b), (a+x,b)(a + x, b), (a+x,b+x)(a + x, b + x)의 내부와 경계에 있는 못은 다음과 같다: a≤r≤a+xa \le r \le a + x인 각 줄 rr에 대해, b≤c≤b+(r−a)b \le c \le b + (r - a)를 만족하는 못 (r,c)(r, c)이다.

예를 들어 N=5N = 5이고 두 고무줄이 각각 좋은 정삼각형 (2,2,1)(2, 2, 1)과 (2,1,3)(2, 1, 3)을 감싼다면, 못 (1,1)(1, 1), (4,4)(4, 4), (5,5)(5, 5)를 제외한 12개의 못이 한 개 이상의 고무줄에 감싸인다.

예제1

  1. 예제 1

    입력
    5 2
    2 2 1
    2 1 3
    
    예상 출력
    12