만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

큰 도전

시간 제한2초메모리 제한1024 MB

요약
각 컨테이너 x마다, 타입 1 로봇의 구간을 x가 포함되도록 늘렸을 때 로봇들이 넣을 수 있는 부품의 최대 개수를 구합니다.
난이도

어려움10점 중 9점

유형
구간, 그리디, 누적 합
정답자
아직 제출이 없습니다

문제

Sirius 교육센터의 프로젝트 주간에서 한 팀의 참가자들이 산업용 로봇을 설계합니다. 1번부터 nn번까지 번호가 매겨진 nn개의 컨테이너가 일렬로 놓여 있습니다. ii번 컨테이너에는 부품을 모두 합쳐 최대 aia_i개까지 넣을 수 있습니다. 참가자들은 로봇 mm대를 만들었습니다. 처음에 jj번 로봇은 부품 cjc_j개를 가지고 있으며, 그중 일부를 컨테이너에 넣습니다. jj번 로봇에는 작용 범위 lj≤rjl_j \le r_j가 있어서, ljl_j번부터 rjr_j번까지의 컨테이너에만 부품을 넣을 수 있습니다. 로봇들은 전체적으로 가능한 한 많은 부품을 컨테이너에 넣으려고 합니다.

로봇은 두 종류입니다. tj=0t_j = 0인 로봇의 작용 범위는 항상 그대로입니다. tj=1t_j = 1인 로봇은 프로그램을 바꿀 수 있습니다. 컨테이너 xx를 가장 중요한 컨테이너로 지정하면, 종류가 1인 각 로봇의 작용 범위는 xx를 포함하도록 최소한으로 넓어집니다. 식으로 쓰면 종류가 1인 jj번 로봇의 범위는 [min⁡(lj,x),max⁡(rj,x)][\min(l_j, x), \max(r_j, x)]가 됩니다.

xx를 1부터 nn까지 하나씩 두고, 컨테이너 xx가 가장 중요하며 로봇들이 최적으로 행동할 때 로봇들이 컨테이너에 넣을 수 있는 부품의 최대 개수를 구하세요.

입력

각 테스트는 여러 개의 입력 데이터 묶음으로 이루어집니다. 첫 줄에는 묶음의 개수를 나타내는 정수 tt (1≤t≤2000001 \le t \le 200000)가 주어집니다. 각 묶음의 첫 줄에는 컨테이너 수와 로봇 수를 나타내는 정수 nn, mm (1≤n,m≤2000001 \le n, m \le 200000)이 주어집니다. 다음 줄에는 컨테이너의 용량 aia_i (0≤ai≤1090 \le a_i \le 10^9) nn개가 주어집니다. 이어지는 mm개의 줄에는 각각 정수 ljl_j, rjr_j, cjc_j, tjt_j (1≤lj≤rj≤n1 \le l_j \le r_j \le n, 0≤cj≤1090 \le c_j \le 10^9, tj∈{0,1}t_j \in \{0, 1\})가 주어집니다. 순서대로 로봇의 작용 범위, 처음 가진 부품 수, 종류입니다. 한 테스트에 있는 모든 입력 묶음에 대해 nn의 합을 ∑n\sum n, mm의 합을 ∑m\sum m이라 할 때, ∑n≤200000\sum n \le 200000이고 ∑m≤200000\sum m \le 200000이 보장됩니다.

출력

각 입력 묶음마다 xx가 1부터 nn까지일 때의 답을 nn개의 정수로 출력합니다.

예제1

  1. 예제 1

    입력
    1
    4 3
    3 3 2 2
    1 2 2 0
    3 3 3 0
    2 2 4 1
    
    예상 출력
    8 7 7 8