Задача. Индекс
на Шапли-Шубик за политическа
сила при
да-не система за гласуване
[ Пети междууниверситетски турнир по програмиране, 19 май 2002
г., БСУ ]
Във всеки съюз или обединение от политически
субекти
(напр. държави) се налага да се приеме система за вземане на решения.
Една
такава система е да се гласува с "да'' или "не'', като всяка държава да
има определен брой гласове. Решение да се взема когато броят на
гласовете
"да'' е по-голям или равен на определена граница. Коалиция се нарича
група
държави, която гласува
с "да'' за дадено предложение. Ако сумата от гласовете на държавите
в коалицията е по-голяма или равна на определената граница, то
предложението
се приема и тази коалиция се нарича печеливша.
Например през 1958 г. се създава Европейския съюз
с точно такава система за вземани на важни решения. Участващите в съюза
държави и гласовете им са:
Франция, Германия, Италия - по 4 гласа,
Белгия, Холандия - по 2 гласа,
Люксембург - 1 глас.
Предложение се
приема, ако за него са гласували с "да'' 12 от общо 17 гласа. Две
печеливши
коалиции в съюза са например Франция, Германия и Италия или Франция,
Германия,
Белгия, Холандия и Люксембург.
Една от няколкото известни мерки за политическата
сила на дадена държава в един съюз е индексът на Шапли-Шубик. Ето как
се
дефинира този индекс. Нека съюзът се състои от n държави
- p1, p2, ..., pn. Разглеждаме
всички възможне наредби
на n-те държави. Нека индексите
i1, i2,..., in задават една конкретна
наредба. Държавата
pik
се нарича централна за тази наредба, ако коалицията, състояща се от pi1, pi2, ..., pi(k
- 1) не е печеливша, а коалицията pi1, pi2, ..., pik
е печеливша. Индекс на Шапли-Шубик за държавата p се нарича
отношението на броя на наредбите, в които p е централна
към броя на всички възможни наредби. Да се напише програма за
пресмятане
на индекса на Шапли-Шубик.
Входен файл - shsh.in
Съдържа няколко тестови примери. Данните за всеки от примерите са
записани
на два последователни реда във файла. Първият ред за всеки от примерите
съдържа две цели числа, разделени с един интервал - броят N на държавите
в съюза (1 < N < 11) и
необходимият брой гласове V
за вземане на решение.
На следващия ред има N цели
числа (разделени с по един
интервал), които са гласовете на участниците в съюза. Файлът завършва
с ред, съдържащ числото 0.
Изходен файл - shsh.out
За всеки пример трябва да се изведат N
цели числа, по едно на ред,
всяко равно на индекса на Шапли-Шубик, изразен в проценти за поредния
участник
в съюза. Числата да са закръглени (по общоприетите правила за
закръгляване)
с 1 значеща цифра след десетичната точка. Между изходните данни за
отделните
примери трябва да се оставя по един празен ред.
Пример:
3 51
50 49 1
6 12
4 4 4 2 2 1
0
Решение на примера:
66.6
16.6
16.6
0
100