Zgłaszanie | Wszystkie zgłoszenia | Najlepsze | Lista |
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łowego | 5000B |
Limit pamięci: | 1536MB |
Cluster: | Cube (Intel G860) |
Języki programowania: | CSHARP CPP C99 PAS-FPC PERL6 PHP PYTHON PYTHON3 PY_NBC RUBY |