60032 아이템 획득 Gold III

시간 제한: 3초 메모리 제한: 1024MB

문제

여러분은 22차원 지도에서 자동차를 조종하며 아이템을 모으는 게임을 제작하고 있다.

지도에는 아이템을 얻을 수 있는 NN개의 상자가 있다. i번째 상자의 위치는 (xi,yi)(x_i , y_i)이고, 자동차가 이 위치를 지날 때마다 wiw_i개의 아이템을 얻을 수 있다.

자동차는 xx축 또는 yy축에 평행한 방향으로 이동한다. 자동차의 이동은 두 정수 ddvv로 표현할 수 있다. d=0d = 0이면 xx좌표가 증가하는 방향으로 vv만큼, d=1d = 1이면 yy좌표가 증가하는 방향으로 vv만큼, d=2d = 2이면 xx좌표가 감소하는 방향으로 vv만큼, d=3d = 3이면 yy좌표가 감소하는 방향으로 vv만큼 이동한다.

이때 이동이 시작되는 위치에 있는 상자의 아이템은 얻을 수 없다. 즉, (sx,sy)(s_x, s_y)에서 (ex,ey)(e_x, e_y)로 이동하는 경우, (sx,sy)(s_x, s_y)에 있는 상자의 아이템은 얻을 수 없고, (ex,ey)(e_x, e_y)에 있는 상자의 아이템은 얻을 수 있다.

자동차는 (1,1)(1, 1)에서 시작해 총 QQ번 이동한다. 자동차의 이동 방향과 거리가 주어지면, QQ번의 이동에서 얻게 되는 아이템의 총 개수를 구하시오.

입력

첫 번째 줄에 상자의 개수 NN과 이동 횟수 QQ가 공백으로 구분되어 주어진다.

이후 NN개의 줄이 주어진다. 이 중 i번째 줄에는 세 정수 xix_i, yiy_i, wiw_i가 공백으로 구분되어 주어진다. 이는 ii번째 상자가 (xi,yi)(x_i , y_i)에 있으며, 이 위치를 지날 때마다 wiw_i개의 아이템을 얻게 됨을 의미한다.

이후 QQ개의 줄이 주어진다. 이 중 jj번째 줄에는 두 정수 djd_j, vjv_j가 공백으로 구분되어 주어진다. 이는 자동차가 djd_j방향으로 vjv_j만큼 이동함을 의미한다.

출력

첫 번째 줄에 QQ번의 이동에서 얻게 되는 아이템의 총 개수를 출력한다.

제한

  • 1N2000001 ≤ N ≤ 200\,000
  • 1Q2000001 ≤ Q ≤ 200\,000
  • 1xi2000001 ≤ x_i ≤ 200\,000
  • 1yi2000001 ≤ y_i ≤ 200\,000
  • 1wi2000001 ≤ w_i ≤ 200\,000
  • 0dj30 ≤ d_j ≤ 3
  • 1vj2000001 ≤ v_j ≤ 200\,000
  • 상자의 위치는 서로 다르다.
  • 매 순간 자동차의 xx, yy좌표는 11 이상 200000200\,000 이하이다.
  • 주어지는 수는 모두 정수이다.

서브태스크

번호배점제한
19N2000N ≤ 2\,000, Q2000Q ≤ 2\,000, xi1000x_i ≤ 1\,000, yi1000y_i ≤ 1\,000, wi10w_i ≤ 10, 매 순간 자동차의 xx, yy좌표는 10001\,000 이하이다.
217N2000N ≤ 2\,000, Q2000Q ≤ 2\,000, wi10w_i ≤ 10
315모든 상자의 xx좌표가 서로 다르고, yy좌표가 서로 다르다.
437wi=1w_i = 1
522추가 제약 조건 없음.

예제 입출력

예제 입력 1
4 6
5 5 3
5 8 5
3 5 2
1 5 1
0 4
1 9
3 5
2 3
2 1
0 5
예제 출력 1
24
예제 입력 2
3 3
1 3 1
2 2 1
3 1 1
1 3
0 2
3 3
예제 출력 2
2

출처

올림피아드 한국정보올림피아드 KOI 2023 1차 초등부 3번
solution.cpp
에디터 불러오는 중...