Zgłaszanie | Wszystkie zgłoszenia | Najlepsze | Lista |
JASIUTEX - Wypracowanie |
Jasiu napisał wypracowanie z matematyki w pewnym języku do składu tekstu,
nazwijmy go JasiuTeX (czyt. Jasiutech).
W języku JasiuTeX są trzy typy kontekstu: (0),(1),(2).
Nie wszystkie słowa, których Jasiu użył w pliku źródłowym, nadają się do druku,
ale niektóre z nich nie są widoczne po wydrukowaniu (to zależy od kontekstu).
Teraz Jasiu chce zastąpić nieodpowiednie słowa porządnymi tylko tam, gdzie to konieczne.
Na szczęście Jasiu ma już program do zastępowania tekstu innym,
ale musi znać pozycje fragmentów do wycięcia.
Pomóż Jasiowi napisać wypracowanie ,,na czysto''.
Oto opis kontekstów w języku JasiuTeX.
Każdy znak pliku znajduje się w jednym z trzech kontekstów: (0), (1), (2).
Podział pliku, na ciągłe fragmenty o ustalonym kontekście, odbywa się rekurencyjnie według poniższego przepisu.
A) Najpierw klasyfikujemy kontekst początkowego fragmentu pliku.
Oznaczmy przez X niepusty ciąg znaków nie zawierający znaku dolara.
1. Jeśli początek pliku jest postaci $$X$$, to fragment $$X$$ jest w kontekście (2).
2. Jeśli początek pliku jest postaci $X$, to fragment $X$ jest w kontekście (1).
3. Jeśli początek pliku jest postaci X, to fragment X jest w kontekście (0).
Zakładamy, że dane wejściowe są poprawne, np. plik nie zaczyna się ciągiem "$$$".
B) Odcinamy pierwszy fragment i dla pozostałego tekstu używamy reguł z kroku A).
Wejście
N - liczba wyszukiwanych wzorców, 1 <= N <= 100
opcje dla wzorca numer 1
wzorzec numer 1
...
opcje dla wzorca numer N
wzorzec numer N
tekst pliku do przeszukania (może mieć wiele linii)
Możliwe opcje to: 0,1,2,01,02,12,012; wskazują, w których kontekstach chcemy szukać.
Wzorzec składa się ze znaków ASCII, nie zawiera znaku '$' ani białych znaków (znak nowej linii, spacja, tabulator).
Wyjście
Oprócz ostatniej linii, każda linia odpowiada jednemu wystąpieniu któregoś wzorca w tekście i zawiera cztery liczby całkowite z przedziału [1,10^9]:
- numer wzorca (1<=i<=N),
- numer linii, w której znaleziono wzorzec,
- pozycje początku i końca wzorca w tej linii.
Jeśli wzorzec występuje w danej linii począwszy od pozycji k-tej, a także począwszy od (k+n)-tej, a długość wzorca jest większa niż liczba n, to należy wypisać tylko wcześniejsze z tych dwu wystąpień.
Ostatnia linia na wyjściu programu powinna być pusta.
Przykład
Wejście: 2
0
bzdury
12
popelina
Straszne zatem udowodnijmy bzdury.
Niech $x$ i $y$ - liczby niezerowe, i niech zachodzi $$x=y.$$
Wtedy $$ x^2=xy. $$
Odejmujemy to samo po obu stronach:
$$ x^2-y^2 = xy - y^2 \qquad\Big/(x-y).$$
Dzielimy przez $(x-y)\opis{popelina!}$:
$$x+y=y.\komentarzJasia{bzdury!!!}$$
Ale mamy $ x = y $, zatem otrzymujemy $$2y=y.\opis{popelina jak ta lala}$$
Niezerowe $y$ daje w rezultacie
$$
2 = 1.
$$ Niesamowita popelina w ciapki. Wyjście: 1 1 28 33
2 6 28 35
2 8 52 59
Dodane przez: | Wojciech Czernous |
Data dodania: | 2014-02-08 |
Limit czasu wykonania programu: | 10s |
Limit długości kodu źródłowego | 50000B |
Limit pamięci: | 1536MB |
Cluster: | Cube (Intel G860) |
Języki programowania: | C C++ 4.3.2 CPP PAS-GPC PAS-FPC |
Pochodzenie: | private |