Problem hidden
|This problem was hidden by Editorial Board member probably because it has incorrect language|version or invalid test data, or description of the problem is not clear.|

WIPING35 - Bankowa Izba Rozliczeniowa

Zadanie eliminacyjne w konkursie WIPING3 organizowanym przez
Wydział Informatyki Zachodniopomorskiego Uniwersytetu Technologicznego w Szczecinie

Kompensator

Twoim zadaniem jest napisanie programu dla Bankowej Izby Rozliczeniowej. Ta szacowna instytucja pośredniczy w wykonywaniu przelewów pomiędzy bankami i odbywa się to następująco:

  • w regularnych odstępach czasu wszystkie banki transmitują do Izby dane na temat przelewów zleconych przez klientów
  • Izba analizuje przesłane jej dane i dokonuje kompensat (np. jeśli bank A chce przelać 100 zł do banku B, a bank B 50 zł do banku A, to po kompensacie obie operacje zostaną zastąpione jednym przelewem kwoty 50 zł z banku A do B)
  • po odebraniu wszystkich zleceń Izba generuje dyspozycje końcowe, tzn. zestawienia kwot, które po kompensacie mają zostać przelane pomiędzy bankami

Wejście

Nieznana z góry liczba wierszy, z których każdy zawiera jedno zlecenie przelewu:

  • zlecenie składa się z trzech pól
  • pola rozdziela się co najmniej jedną spacją lub co najmniej jedną tabulacją
  • pierwsze pole zawiera wyłącznie litery i podaje nazwę banku nadającego przelew
  • drugie pole zawiera wyłącznie litery i podaje nazwę banku odbierającego przelew
  • nazwy banków nie są dłuższe niż 100 znaków
  • trzecie pole określa kwotę przelewu z dokładnością do grosza; część dziesiętną oddziela się od całkowitej przecinkiem
  • kwota pojedynczego przelewu nie przekracza 10 milionów złotych
  • możliwe jest wystąpienie więcej niż jednego zlecenia przelewu z tym samym bankiem nadającym i tym samym odbierającym

Wyjście

  • jeden wiersz tekstu, ujęty w cudzysłowy i zakończony znakiem przejścia do nowego wiersza, zawierający wszystkie dyspozycje końcowe
  • każda dyspozycja składa się z:
    • nazwy banku nadającego przelew;
    • po spacji nazwy banku przyjmującego przelew;
    • po spacji kwoty podlegającej przelaniu, podanej z dokładnością do groszy, z częścią dziesiętną oddzieloną od całkowitej przecinkiem; liczbę groszy wyprowadza się zawsze na dwóch cyfrach, nawet wtedy, gdy jest ona równa zero; liczbę złotych wyprowadza się bez zer wiodącychl jeśli jest równa zero, wtedy przed przecinkiem wyprowadza się jedną cyfrę 0.
  • wyprowadza się tylko dyspozycje o kwocie większej od zera;
  • dyspozycje rozdziela się pojedynczymi spacjami;
  • dyspozycje sortuje się alfabetycznie według dwuczęściowego klucza, na który składają się:
    • nazwa banku nadającego przelew;
    • nazwa banku odbierającego przelew.

 

Wejście:

C Z 1,00
C X 1,00
B T 2,00
B S 2,00
A L 3,00
A K 3,00

Wyjście:

"A K 3,00 A L 3,00 B S 2,00 B T 2,00 C X 1,00 C Z 1,00"

 

Wejście:

AAAAA BBBBB 100,00
AAAAA BBBBB 50,00
BBBBB AAAAA 200,00
AAAAA CCCCC 250,00
CCCCC BBBBB 100,00
BBBBB CCCCC 300,00
CCCCC AAAAA 150,00

Wyjście:

"AAAAA CCCCC 100,00 BBBBB AAAAA 50,00 BBBBB CCCCC 200,00"

 

Informacje dodatkowe

  • program zostanie uruchomiony 10 razy dla różnych zestawów danych

  • każde poprawne rozwiązanie daje 10% punktacji zadania

  • zadanie ma wartość punktową 4,0

 

Dodane przez:Sławomir Wernikowski
Data dodania:2014-11-25
Limit czasu wykonania programu:0.5s-5s
Limit długości kodu źródłowego5000B
Limit pamięci:1536MB
Cluster: Cube (Intel G860)
Języki programowania:CSHARP CPP C99 PAS-FPC PERL6 PHP PYTHON PYTHON3 PY_NBC RUBY
© Spoj.com. All Rights Reserved. Spoj uses Sphere Engine™ © by Sphere Research Labs.