第一行输入五个整数
。
接下来
行,每行输入四个整数
,表示坐标
与
的两位同学会交头接耳,且两坐标上下相邻或左右相邻。
保证最优方案存在且唯一。
第一行输出
个严格递增的整数
,在行
与
之间设置横向通道。
第二行输出
个严格递增的整数
,在列
与
之间设置纵向通道。
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
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;
void async function () {
// Write your code here
while(line = await readline()){
const [n, m, k, l, d] = line.split(' ').map(Number);
let sameRows = new Map();
let sameCols = new Map();
for (let i = 0; i < d; i++) {
const [x, y, p, q] = (await readline()).split(' ').map(Number);
if (x === p) {
const k = Math.min(y, q);
sameRows.set(k, (sameRows.get(k) || 0 ) + 1);
} else {
const k = Math.min(x, p)
sameCols.set(k, (sameCols.get(k) || 0) + 1);
}
}
let sameRowsArr = Array.from(sameRows);
sameRowsArr.sort((a, b) => b[1] - a[1]);
// console.log('sameRowsArr ', sameRowsArr)
let sameColsArr = Array.from(sameCols);
sameColsArr.sort((a, b) => b[1] - a[1]);
// console.log('sameColsArr ', sameColsArr)
const kList = [];
for (let i = 0; i < sameColsArr.length; i++) {
if (i < k) {
kList.push(sameColsArr[i][0]);
}
}
kList.sort((a, b) => a - b);
const lList = [];
for (let i = 0; i < sameRowsArr.length; i++) {
if (i < l) {
lList.push(sameRowsArr[i][0]);
}
}
lList.sort((a, b) => a - b);
console.log(kList.join(' '));
console.log(lList.join(' '));
}
}()