| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 9 초 (추가 시간 없음) | 1024 MB | 0 | 0 | 0 | 0.000% |
W ramach przygotowania do konkursów algorytmicznych Bajtek postanowił nauczyć się czegoś o programowaniu współbieżnym. Przecież nawet na Potyczkach Algorytmicznych występowały kiedyś zadania rozproszone.
Bajtek zaczął od napisania n bardzo prostych programów. Wszystkie programy współdzielą jedną globalną całkowitoliczbową zmienną x, dodatkowo każdy z nich posiada jeden prywatny licznik y. Każdy program składa się z ciągu operacji, a każda operacja jest jednego z następujących czterech typów:
W – wczytanie wartości globalnej zmiennej x do prywatnego licznika y,Z – zapisanie wartości prywatnego licznika y na globalną zamienną x,+ c – zwiększenie prywatnego licznika y o dodatnią stałą c,- c – zmniejszenie prywatnego licznika y o dodatnią stałą c.Bajtek uruchomił wszystkie programy równolegle. Początkowe wartości wszystkich liczników y oraz zmiennej x wynosiły 0. Programy zostały wykonane w pewnym przeplocie, czyli wszystkie operacje ze wszystkich programów zostały wykonane jedna po drugiej, w pewnej kolejności spełniającej warunek, że w każdym momencie był wykonany prefiks każdego programu.
Przeplot ten okazał się dość niefortunny i ostateczna wartość zmiennej x była na tyle mała, że bardzo zaskoczyła Bajtka. Podejrzewa on nawet, że nie jest to możliwe i jego komputer go oszukał. Pomóż Bajtkowi zweryfikować jego obawy i napisz weryfikator, który dla danych programów obliczy, jaka jest najmniejsza możliwa wartość zmiennej x po równoległym wykonaniu wszystkich programów.
Pierwszy wiersz wejścia zawiera jedną liczbę całkowitą t (1 ≤ t ≤ 100 000) oznaczającą liczbę zestawów testowych.
Opis każdego zestawu testowego zaczyna się wierszem zawierającym liczbę całkowitą n (1 ≤ n ≤ 100 000) oznaczającą liczbę programów napisanych przez Bajtka. Następne 2n wierszy zawiera opisy poszczególnych programów. Opis każdego programu składa się z dwóch wierszy. Pierwszy z nich zawiera jedną liczbę całkowitą ℓ (1 ≤ ℓ ≤ 1 000 000) oznaczającą liczbę operacji w danym programie. Drugi zawiera ciąg ℓ operacji, każda z nich jest jednego z czterech typów:
W – oznaczająca operację wczytania,Z – oznaczająca operację zapisania,Suma po wszystkich wartościach ℓ we wszystkich programach ze wszystkich przypadków testowych nie przekroczy 1 000 000.
Na wyjście należy wypisać t wierszy; i-ty z nich powinien zawierać jedną liczbę całkowitą, oznaczającą najmniejszą możliwą wartość x po równoległym wykonaniu programów z i-tego zestawu testowego.
2 2 12 W + 2 Z W + 2 Z W + 2 Z W + 2 Z 12 W + 3 Z W + 3 Z W + 3 Z W + 3 Z 3 3 W W - 5 5 + 9 Z + 1 Z W 8 + 10 Z - 2 Z - 5 W - 1 Z
5 7
Wyjaśnienie przykładu: W pierwszym przypadku testowym minimalną końcową wartość x daje na przykład następujący przeplot:
Contest > Algorithmic Engagements > PA 2020 5-5번