序列I:15,123,456,786,453,46,7,5,3,665,453456,745,456,786,453,123(第一个15表明后续有15个整数)
序列R:5,6,3,6,3,0(第一个5表明后续有5个整数)
输出:30, 3,6,0,123,3,453,7,3,9,453456,13,453,14,123,6,7,1,456,2,786,4,46,8,665,9,453456,11,456,12,786
说明:
30----后续有30个整数
3----从小到大排序,第一个R<i>为0,但没有满足条件的I,不输出0,而下一个R<i>是3
6--- 存在6个包含3的I
0--- 123所在的原序号为0
123--- 123包含3,满足条件
示例1
输入:
15 123 456 786 453 46 7 5 3 665 453456 745 456 786 453 123
5 6 3 6 3 0
输出:
30 3 6 0 123 3 453 7 3 9 453456 13 453 14 123 6 7 1 456 2 786 4 46 8 665 9 453456 11 456 12 786
说明:
将序列R:5,6,3,6,3,0(第一个5表明后续有5个整数)排序去重后,可得0,3,6。
序列I没有包含0的元素。
序列I中包含3的元素有:I[0]的值为123、I[3]的值为453、I[7]的值为3、I[9]的值为453456、I[13]的值为453、I[14]的值为123。
序列I中包含6的元素有:I[1]的值为456、I[2]的值为786、I[4]的值为46、I[8]的值为665、I[9]的值为453456、I[11]的值为456、I[12]的值为786。
最后按题目要求的格式进行输出即可。
let iArr = [],
rArr = [],
inputArr = [];
while ((line = await readline())) {
inputArr.push(line);
}
iArr = inputArr[0].split(" ");
rArr = inputArr[1].split(" ");
rArr.shift();
iArr.shift();
rArr = rArr.map(Number);
let newrArr = Array.from(new Set(rArr)).sort();
let resultArr = new Array(newrArr.length).fill({ num: "", list: [] });
let result = "";
for (let i = 0; i < newrArr.length; i++) {
resultArr[i] = { num: newrArr[i], list: [] };
for (let j = 0; j < iArr.length; j++) {
if (iArr[j].indexOf(newrArr[i]) != -1) {
resultArr[i].list.push({
index: j,
value: iArr[j],
});
}
}
}
let count = 0;
resultArr.map(item=>{
if(item.list.length>0){
count+=item.list.length*2+2
result+=item.num+' '+item.list.length+' '
item.list.map(sitem=>{
result+=sitem.index+' '+sitem.value+' '
})
}
})
result = count+' '+result
console.log(result);
网友评论