#S0103. Canvas

Canvas

题目描述

有一个长度为 nn 的序列,一开始序列中的所有元素均为 00。另外还有 mm 个操作,其中第 ii 个操作会将序列中第 lil_i 个元素的值改为 xix_i,以及将序列中第 rir_i 个元素的值改为 yiy_i。每个操作必须恰好执行一次。

求执行操作的最优顺序,使得所有操作执行完成后,序列中所有元素之和最大。

输入格式

有多组测试数据。第一行输入一个整数 TT 表示测试数据组数。对于每组测试数据:

第一行输入两个整数 nnmm2n,m5×1052 \leq n, m \leq 5 \times 10^5)表示序列的长度和操作的个数。

对于接下来 mm 行,第 ii 行输入四个整数 lil_ixix_irir_iyiy_i1li<rin1 \leq l_i<r_i \leq n1xi,yi21 \leq x_i,y_i \leq \textbf{2})表示第 ii 个操作。

保证所有数据 nn 之和与 mm 之和均不超过 5×1055 \times 10^5

输出格式

每组数据首先输出一行一个整数,表示执行操作后,所有元素的最大和。接下来输出一行 mm 个由单个空格分隔的整数 a1,a2,,ama_1, a_2, \cdots, a_m 表示执行操作的最优顺序,其中 aia_i 表示第 ii 次执行的操作的编号。从 11mm 的每个整数(含两端)必须恰好出现一次。若有多种合法答案,您可以输出任意一种。

2
4 4
1 1 2 2
3 2 4 1
1 2 3 2
2 1 4 1
4 2
3 2 4 1
1 2 3 1
7
4 1 3 2
5
2 1

样例解释

对于第一组样例数据,按 4,1,3,24, 1, 3, 2 的顺序执行操作后,序列变为 {2,2,2,1}\{2, 2, 2, 1\},元素之和为 77

对于第二组样例数据,按 2,12, 1 的顺序执行操作后,序列变为 {2,0,2,1}\{2, 0, 2, 1\},元素之和为 55