第一行输入五个整数
。
接下来
行,每行输入四个整数
,表示坐标
与
的两位同学会交头接耳,且两坐标上下相邻或左右相邻。
保证最优方案存在且唯一。
第一行输出
个严格递增的整数
,在行
与
之间设置横向通道。
第二行输出
个严格递增的整数
,在列
与
之间设置纵向通道。
4 5 1 2 3 4 2 4 3 2 3 3 3 2 5 2 4
2 2 4
该样例如下图所示,蓝底斜线方格为第一对交头接耳的同学,绿底带叉方格为第二对交头接耳的同学,粉底带星方格为第三对交头接耳的同学。粗线代表通道。该划分方案为唯一最优方案。
2 2 1 1 4 1 1 1 2 1 1 2 1 2 1 2 2 1 2 2 2
1 1
from collections import Counter row, col, r, c, d = map(int, input().split()) r_list = [] c_list = [] for i in range(d): ds = [int(x) for x in input().split()] if ds[0] == ds[2]: value = min(ds[1], ds[3]) c_list.append(value) else: value = min(ds[0], ds[2]) r_list.append(value) count_r = sorted(Counter(r_list).items(), key=lambda items: items[1],reverse=True) count_c = sorted(Counter(c_list).items(), key=lambda items: items[1],reverse=True) if len(set(r_list)) > r: result_r = [] for i in range(r): result_r.append(count_r[i][0]) result_r = map(str, sorted(result_r)) print(' '.join(result_r)) else: result_r = map(str, sorted(set(r_list))) print(' '.join(result_r)) if len(set(c_list)) > c: result_c = [] for i in range(c): result_c.append(count_c[i][0]) result_c = map(str, sorted(result_c)) print(' '.join(result_c)) else: result_c = map(str, sorted(set(c_list))) print(' '.join(result_c))