LATVIJAS REPUBLIKAS 12. INFORMĀTIKAS OLIMPIĀDES
II POSMA UZDEVUMI

1. “VIRKNE”

    Gadās, ka datora klaviatūrai kāds no taustiņiem iesprūst un tad viena burta vietā tekstā būs vairāki vienādi, pēc kārtas esoši burti. Piemēram, vārda "klavieres" vietā var iznākt "kkkkkklaavierrrrrees".
    Uzrakstiet programmu, kas labo šādas kļūdas - t.i., ievadītā simbolu virknē atrod visas vietas, kurās ir vairāki vienādi simboli pēc kārtas, un katrā šādā vietā atstāj tikai vienu no šiem simboliem, bet pārējos izdzēš un virkni "sabīda kopā".

Ievaddati
Teksta faila VIRKNE.DAT pirmajā rindā ir dota simbolu virkne, kurā ir tikai latīņu alfabēta mazie burti. Virknē ir vismaz viens un ne vairāk kā 250 simboli.

Izvaddati
Teksta faila VIRKNE.REZ pirmajā rindā izvadiet izlaboto virkni.

Piemērs
Ievaddati (VIRKNE.DAT)                             Izvaddati (VIRKNE.REZ)
kkkkkklaavierrrrrees         klavieres


2. “ZīMUļU FABRIKA”

Zīmuļu fabrikā katra zīmuļa sagatave tiek apstrādāta sekojoši - vispirms tā tiek nokrāsota krāsošanas iekārtā un tūlīt pēc tam tiek lakota lakošanas iekārtā. Diemžēl neviena no iekārtām nav pilnībā noregulēta. Krāsošanas iekārta pēc katrām n nokrāsotām sagatavēm vienu nenokrāso (bet padod tālāk uz lakošanu). Savukārt lakošanas iekārta pēc katrām m nolakotām sagatavēm vienu nenolako. Tādējādi bez kārtīgi nokrāsotiem un nolakotiem zīmuļiem var iznākt trīs veida brāķi: pavisam neapstrādāta sagatave, nokrāsoti, bet nenolakoti un nekrāsoti, bet nolakoti zīmuļi.

Uzrakstiet programmu, kas ievadītām n, m un k (apstrādājamo sagatavju skaits) vērtībām nosaka, cik tiks iegūti pilnīgi apstrādāti zīmuļi un cik kāda veida brāķis tiks saražots. Zināms, ka pēdējā sagatave pirms mūs interesējošo sagatavju apstrādes netika ne nokrāsota, ne nolakota.

Tā, piemēram, ja n=3, m=5 un k=17, tad sagatavju apstrādi var attēlot sekojošā tabulā (¡ nozīmē, ka dotā operācija ir izdarīta, l - ka nav):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
Krāsošana ¡ ¡ ¡ l ¡ ¡ ¡ l ¡ ¡ ¡ l ¡ ¡ ¡ l ¡
Lakošana ¡ ¡ ¡ ¡ ¡ l ¡ ¡ ¡ ¡ ¡ l ¡ ¡ ¡ ¡ ¡

Kā redzams, no 17 sagatavēm pilnīgi apstrādātas ir 12. Viena (12.) ir palikusi pilnīgi neapstrādāta. Viena sagatave (6.) ir nokrāsota, bet nav nolakota. Trīs sagataves (4.,8. un 16.) nav nokrāsotas, bet ir nolakotas.

Ievaddati
Teksta faila FABRIKA.DAT pirmajā rindā ir dotas trīs naturālu skaitļu n, m un k vērtības.

Zināms, ka 0<n<106, 0<m<106, 0<k<109. Starp katrām divām blakus esošajām vērtībām ir viens tukšumsimbols.

Izvaddati

Teksta faila FABRIKA.REZ pirmajā rindā izvadiet èetru veselu skaitļu vērtības:
a) to zīmuļu, kas ir gan nokrāsoti, gan nolakoti, skaitu;
b) neapstrādāto sagatavju (nav ne krāsotas, ne lakotas) skaitu;
c) nokrāsoto, bet nenolakoto zīmuļu sagatavju skaits;
d) nenokrāsoto, bet nolakoto zīmuļu sagatavju skaits.
Skaitļi failā jāizvada norādītajā secībā. Starp katriem diviem blakus esošajiem skaitļiem jāatstāj viens tukšumsimbols.

Piemēri
Ievaddati (FABRIKA.DAT)                         Izvaddati (FABRIKA.REZ)
3 5 17                      12 1 1 3

Ievaddati (FABRIKA.DAT)                         Izvaddati (FABRIKA.REZ)
999999 999999 999999999     999999000 999 0 0


3. “SILTUMTRASE”
 
Siltumtrasei jāsavieno n×m rūtiņas liela taisnstūrveida apgabala kreisā augšējā stūra rūtiņas (1;1) augšējā mala ar labā apakšējā stūra rūtiņas (n;m) labo malu. Siltumtrases izbūvē var izmantot 1.zīmējumā redzamās četru veidu caurules, katra no kurām savieno divas vienas rūtiņas malas. 
1.zīmējums.  Cauruļu veidi.
Caurulēm siltumtrasē jābūt iebūvētām tieši tā kā redzams zīmējumā, bez pagriešanas. Tāpēc neviena caurule nevar savienot ne rūtiņas kreiso malu ar augšējo, ne labo malu ar apakšējo. Izbūvētās siltumtrases caurulēm jābūt savienotām, t.i., ja divu blakus rūtiņu caurules pieder siltumtrasei, tad cauruļu galiem abās rūtiņās ir jāpienāk pie šo rūtiņu kopīgās malas. Visai siltumtrasei ir jāatrodas dotajā taisnstūrveida apgabalā - neviens tās posms nedrīkst atrasties ārpus tā.

Sākotnēji katra apgabala rūtiņa var būt tukša (un tad tajā var iebūvēt jaunu cauruli), vai arī tajā var atrasties:
a) senāk ierakta caurule, kuru var izmantot kā posmu siltumtrasē, bet tās vietā nedrīkst ierakt citu cauruli;
b) apstādījumi. Caur šādu rūtiņu siltumtrase nedrīkst iet.

Piemērs apgabalam ar apstādījumiem un senāk ieraktām caurulēm (n=4, m=5) dots 2.zīmējumā. Rūtiņā (4;2) atrodas apstādījumi.


2.zīmējums.  Apgabala piemērs.

šim apgabalam siltumtrasi iespējams izbūvēt trīs dažādos veidos, kas parādīti 3.zīmējumā.


        3.zīmējums. Iespējamie siltumtrases izbūves varianti.

Uzrakstiet programmu, kas dotam apgabalam nosaka, cik dažādos veidos iespējams izbūvēt siltumtrasi.

Ievaddati
Teksta faila TRASE.DAT pirmajā rindā dotas divu naturālu skaitļu n (n£10) un m (m£10) vērtības, kas atdalītas ar tukšumsimbolu. Nākošajās m faila rindās dots pa n cipariem katrā. Faila i+1-ās rindas j-tais cipars atbilst apgabala i-tās rindas j-tās kolonas rūtiņai. Cipars 0 apzīmē tukšu rūtiņu, cipari no 1 līdz 4 apzīmē rūtiņā iebūvētu cauruli saskaņā ar 1.zīmējumu, bet 5 nozīmē, ka attiecīgajā rūtiņā ir apstādījumi. Katrā rindā starp diviem blakus esošiem cipariem ir viens tukšumsimbols.

Izvaddati
Teksta faila TRASE.REZ pirmajā rindā jāizvada viens vesels skaitlis - dažādo iespējamo siltumtrases izbūves variantu skaits.

Piemērs
Ievaddati (TRASE.DAT)                     Izvaddati (TRASE.REZ)
4 5                     3
0 0 3 2
0 4 0 5
4 0 0 0
4 0 1 0
0 3 0 0


Mājup  Uz uzdevumu un testu arhīvu