Двама братя трябва да си поделят комплект от n подаръка. Всеки подарък има стойност цяло положително число. Да се разделят подаръците на две части със стойности a и b, така, че |a - b| да има най-малка стойност.
Нека сумата от стойностите на всички подаръци е p. Правим масив c с p елемента, като c[i] = 1, ако i може да се получи като сума на някои подаръци, в противен случай c[i] = 0. Решението на задачата ще бъде индексът на най-близкия до p/2 ненулев елемент на c.
Нека стойностите на подаръците да са:
3, 2, 3, 2, 2, 77, 89, 23, 90, 11
Решение.
a = 136, b = 166
Задача 3a. Справедливо разделяне на
подаръци
Двама братя трябва да си поделят комплект от n
подаръка. Всеки подарък има стойност цяло положително число. Да се
разделят подаръците на две части със стойности a и b (a
<= b), така, че |a
- b| да има най-малка стойност. Да се определи кои подаръци
дават стойност a.
Вход
На стандартния вход се чете цяло число (не по-голямо от 100) - брой на
примерите, съдържащи се във входа. За всеки пример се задава броят на
предметите n (n < 1000) и след това на
следващите редове стойностите им (n
положителни числа, не по-големи от 1000).
Изход
На стандартния изход се отпечатват решенията на примерите от входа,
като на един ред се отпечатва решението на еди пример. Та се състои от
две числа - първото число е търсената стойност a, а второто число е n-цифрено двоично число (низ от
нули и единици), който показва кои предмети за взети, за да се получи
стойността a.
Пример. 2 10 3 2 3 2 2 77 89 23 90 11 2 8 80 |
Решение на примера. 136 1111100111 8 10 |
Даден е опростен българо-английски речник, като на една ангрийска дума съответстват няколко български думи. Използвайки дадените съответствия, създайте българо-английски речник, така, че думите в двата речника да са едни и същи.
ВходПример за вход good - добър, приятен, хубав, pleasant - любезен, приятен pretty - хубав |
Изход - решение на примерния вход добър - good любезен - pleasant приятен - good, pleasant хубав - good, pretty |