Zgłaszanie | Wszystkie zgłoszenia | Najlepsze | Lista |
AL_19_09 - Kolonizacja galaktyki |
Najnowsze badania naukowe w Bajtocji zaowocowały wynalezieniem napędu nadświetlnego. Dzięki temu możliwe stały się podróże międzygwiezdne, a kolonizacja całej galaktyki, to tylko kwestia czasu. Aby mieć pełną kontrolę nad procesem kolonizacji, powołano do życia Instytut Międzyplanetarnych Analiz Populacji.
Przed znanym bajtockim informatykiem Bajtłomiejem (tym samym, który pracował kiedyś dla BIOS-u i IBM-u), postawiono nowe zadanie. Ma opracować system informatyczny dla IMAP-u. W związku z tym przyjęto szereg założeń.
Galaktykę podzielono na sektory, a każdy z nich otrzymał trzyelementowy kod odpowiadający jego położeniu. Kod (bazujący na współrzędnych sferycznych) ma format RDS, gdzie:
R to znak ze zbioru {'A'..'Z','a'..'z'} określający odległość sektora od środka układu współrzędnych. Literą 'A' oznaczone są sektory położone najbliżej. Dalej 'B','C',..,'Z','a','b',..,'z'.
D odpowiada długości galaktycznej i jest trzycyfrową liczbą całkowitą z zakresu [001;360].
S wynika z szerokości galaktycznej i jest to (poprzedzona znakiem '+' lub '–') dwycyfrowa liczba całkowita o wartości bezwględnej z zakresu [01;90].
Do IMAP-u docierać będą dane na temat zmian demograficznych w poszczególnych sektorach, więc projektowany system ma realizować trzy typy poleceń aktualizujących:
1. Zwiększenie liczby kolonistów w danym sektorze o pewną wartość. Polecenie będzie miało format: RDS W, gdzie RDS to kod sektora, a W to wartość, o jaką zwiększyła się liczba kolonistów w tym sektorze.
2. Zmniejszenie liczby kolonistów w danym sektorze o pewną wartość. Polecenie będzie miało taki sam format jak poprzednie.
3. Przesiedlenie określonej liczby kolonistów z pewnego sektora A do innego sektora B. Format: RADASA RBDBSB W, gdzie RADASA to kod pierwszego sektora, RBDBSB to kod drugiego sektora, a W to liczba przesiedlonych kolonistów.
System ma też wykonywać polecenie czwartego typu. Realizacja tego polecenia ma polegać na obliczeniu aktualnej liczby kolonistów w pewnym multisektorze. Multisektorem o kodzie RADASA RBDBSB (gdzie RA ≤ RB i DA ≤ DB i SA ≤ SB) będziemy nazywać zbiór sektorów RDS, takich że: RA ≤ R ≤ RB i DA ≤ D ≤ DB i SA ≤ S ≤ SB. Format tego polecenia jest taki sam jak kod multisektora, którego dotyczy.
Wejście
Nieokreślona liczba linii (nie większa niż 105) zawierających polecenia kierowane do systemu.
Na początku każdej linii liczba z zakresu 1..4 oznaczająca typ polecenia. Po niej parametry polecenia w formacie odpowiadającym jego typowi.
Liczba kolonistów W, podawana w poleceniach typów 1, 2 i 3 spełnia warunki: 1 ≤ W ≤ 109.
Zagwarantowane jest, że w wyniku wykonania polecenia typu 2 lub 3, liczba kolonistów w żadnym sektorze nie osiągnie wartości ujemnej.
Wyjście
Dla każdego polecenia typu 4, w osobnej linii, wynik jego realizacji - jedna liczba całkowita oznaczająca aktualną liczbę kolonistów w danym multisektorze.
Przykład
Wejście: 1 A005+90 1000 1 C003-40 2000 4 A001-90 D010+90 2 C003-40 500 4 B002-55 c003+90 3 A005+90 x359+89 999 4 B001-90 z360+90 Wyjście: 3000 1500 2499
Dodane przez: | Witold Długosz |
Data dodania: | 2014-11-27 |
Limit czasu wykonania programu: | 1s-2s |
Limit długości kodu źródłowego | 50000B |
Limit pamięci: | 1536MB |
Cluster: | Cube (Intel G860) |
Języki programowania: | All except: ASM64 GOSU |
Pochodzenie: | ALGOLIGA 19 |