输入第一行为数字个数n (n ≤ 20) 第二行为n个数xi (1 ≤ xi ≤ 100000)
输出最小不能由n个数选取求和组成的数
3 5 1 2
4
//对于从小到到排序的数列arr,前k项之和为sum,则1~sum都可以用前k项表示(取其中的某几个相加)
//如果arr[k+1]<=sum+1 ,则 1~sum+arr[k+1] 可以用前 k+1 个数字表示
var readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
var countLine = 1;
var tokens = [];
rl.on('line', function(line){
tokens.push(line);
if(countLine == 2){
var n = parseInt(tokens[0]);
var arr = tokens[1].split(' ').map(function(item){
return parseInt(item);
});
var sum = 0;
arr.sort(function(value1, value2){
return value1 - value2;
});
for(var i=0; i<n; i++){
if(arr[i]> sum+1)
break;
sum += arr[i]; //前i项和
}
console.log(sum+1);
}else{
countLine++;
}
});