Programozás‎ > ‎Feladatok‎ > ‎

Mohó ajándékozók

Egy NP (2 ≤ NP ≤ 10) tagú baráti társaságban (ahol mindenkit máshogy hívnak) elhatározták, hogy pénzt ajándékoznak egymásnak. Bárki adhat pénzt néhány barátjának, de nem kell adnia.  Ugyanígy bárki kaphat pénzt néhány barátjától, de nem feltétlenül kap. El kell döntenünk, hogy az ajándékozások után hogy alakul a pénzügyi helyzetük.

Az ajándékozás szabályai a következők: Mindenki félretesz egy bizonyos összeget, amit egyenletesen oszt szét azok között, akiket meg akar ajándékozni. Tört mennyiségek nem cserélnek gazdát, tehát ha valaki 3 pénzt oszt szét két barátja között, akkor mindkét barát kap 1 pénzt, és az ajándékozónál marad 1 pénz. 

Bármely baráti csoportban vannak, akik többet adnak, és vannak akik többet kapnak.

Feladat

Írjunk programot, ami minden emberre kiszámolja, hogy mennyivel kap többet (vagy kevesebbet), mint amit ő adott.

Bemenet

A bemenet első sora NP értékét tartalmazza, a következő NP sor a neveket. 
Ezután NP csoport következik. 
Minden csoport az ajándékozó nevével kezdődik. A következő sorban két szám van, az ajándékozásra szánt pénzösszeg és a megajándékozottak száma (0 <= NG <= NP-1). A csoport NG sorral zárul, a megajándékozottak nevével.

Kimenet

NP sor, mindegyik egy ember nevével kezdődik (ez inputnak megfelelő sorrendben), majd egy szóközzel elválasztva egy előjeles egész, ami azt adja meg, hogy az eredetileg félrerakott pénzhez képest mennyivel lett több (vagy kevesebb) pénze az adott személynek.

Minden ajándék egész szám és mindenki a lehető legtöbb pénzt osztja szét, amit a fenti szabályok szerint el tud osztani. 

Példa

Bemenet  Kimenet
5
dave
laura
owen
vick
amr
dave
200 3
laura
owen
vick
owen
500 1
dave
amr
150 2
vick
owen
laura
0 2
amr
vick
vick
0 0

dave 302
laura 66
owen -359
vick 141
amr -150


Tesztadatok

Címkék

A feladat forrása: USACO training material, Greedy Gift Givers
Algoritmusok: