Domaći 01


Mapa

Na staroj mapi upisane su koordinate i imena ostrva na kojima se nalaze kovčezi sa blagom. Za svaki od kovčega upisan je i broj zlatnika koji se u njemu nalaze. Posada gusarskog broda želi da iskopa sve kovčege koji imaju barem $k$ zlatnika. Napisati program koji filtrira mapu i ispisuje samo podatke o lokacijama kovčega sa dovoljnim brojem zlatnika.

Ulaz

Sa standardnog ulaza se učitavaju celi brojevi $n$ ($1 \leq n \leq 10^4$) i $k$ ($1 \leq k \leq 10^7$). Nakon toga se u sledećih $n$ linija učitavaju podaci o kovčezima u formatu:

X[<x>];Y[<y>];O{<ime_ostrva>};V{<v>}

pri čemu su <x> i <y> koordinate kovčega (realni brojevi), <ime_ostrva> je ime ostrva na kom se kovčeg nalazi (niska od najviše $20$ karaktera), a <v> količina zlatnika u kovčegu (ceo broj).

Napomena: Voditi računa o čitanju novog reda nakon svake linije ulaza.

Izlaz

Na standardni izlaz u zasebnoj liniji ispisati podatke o lokaciji svakog od kovčega sa barem $k$ zlatnika u sledećem formatu:

(<x>, <y>, <ime_ostrva>)

pri čemu koordinate treba zaokružiti na $2$ decimale.

Primer

Ulaz

4 450
X[12.3122];Y[-21.4232];O{Madagaskar};V{700}
X[42.7232];Y[19.0023];O{Madagaskar};V{300}
X[2.2];Y[-24.212];O{Šri Lanka};V{600}
X[15.823];Y[-33.1212];O{Šri Lanka};V{200}

Izlaz

(12.31, -21.42, Madagaskar)
(2.20, -24.21, Šri Lanka)

Primer

Ulaz

5 100
X[-15.234];Y[-146.123];O{Tahiti};V{200}
X[-15.100];Y[-146.500];O{Tahiti};V{150}
X[55.450];Y[-4.620];O{Mahe};V{120}
X[55.480];Y[-4.700];O{Mahe};V{80}
X[167.950];Y[-29.070];O{Norfolk};V{100}

Izlaz

(-15.23, -146.12, Tahiti)
(-15.10, -146.50, Tahiti)
(55.45, -4.62, Mahe)
(167.95, -29.07, Norfolk)

Primer

Ulaz

5 500
X[-15.234];Y[-146.123];O{Tahiti};V{200}
X[-15.100];Y[-146.500];O{Tahiti};V{150}
X[55.450];Y[-4.620];O{Mahe};V{120}
X[55.480];Y[-4.700];O{Mahe};V{80}
X[167.950];Y[-29.070];O{Norfolk};V{100}

Izlaz



Zamena

Napisati program koji učitava niz pozicija i dve niske iste dužine, a zatim razmenjuje karaktere niski na datim pozicijama. Pretpostaviti da je ulaz ispravno zadat.

Ulaz

Sa standardnog ulaza se učitava broj pozicija $n$ ($1 \le n \le 100$), a zatim i niz od $n$ pozicija (pozitivni celi brojevi). Nakon toga, učitavaju se niske $s1$ i $s2$ jednakih dužina i maksimalnog broja karaktera $100$, svaka u svom redu.

Izlaz

Na standardni izlaz ispisati niske nakon što im se karakteri na odgovarajućim pozicijama razmene. Pozicije brojati sa leva na desno od $0$.

Primer

Ulaz

5
0 3 4 7 9
AAAAAAAAAA
BBBBBBBBBB

Izlaz

BAABBAABAB
ABBAABBABA

Primer

Ulaz

5
0 1 2 3 4
ABCDE
FGHIJ

Izlaz

FGHIJ
ABCDE

Primer

Ulaz

5
0 1 0 1 0
AAA
BBB

Izlaz

BAA
ABB

Podmornice

Napisati program koji implementira igru "Podmornice" u dva igrača. U toj igri, svaki igrač na početku postavlja $3$ podmornice dimenzija $1 \times 3$ na svoju tablu dimenzija $5 \times 5$. Nakon toga, igrači se smenjuju po potezima. Svaki igrač na svom potezu bira koordinate na tabli protivnika koje gađa torpedom. Ukoliko igrač pogodi deo podmornice, taj deo je potopljen i igrač igra ponovo. U suprotnom, drugi igrač dolazi na potez. Ukoliko su svi delovi podmornice potopljeni, ta podmornica je potopljena. Cilj igre je potopiti sve protivničke podmornice.

Zadatak rešiti u više fajlova: main.c, player.c, player.h.

Igrač (Player) treba da podržava sledeće funkcionalnosti:

U funkciji main, u fajlu main.c, simulirati prvih 5 poteza partije između 2 igrača.

Ulaz

Sa standardnog ulaza se u prve $3$ linije zadaju pozicije podmornica igrača broj $1$, a zatim u sledeće $3$ linije pozicije podmornica igrača broj $2$. Nakon toga, u sledećih $5$ linija, unose se koordinate koje tekući igrač gađa torpedom. Obratiti pažnju da ukoliko igrač pogodi deo protivničke podmornice, on ostaje na potezu. Igru počinje igrač broj $1$.

Napomena: Pretpostaviti da je ulaz potpuno ispravan.

Izlaz

Na standardni izlaz ispisati matricu igrača broj $1$ nakon $5$ poteza i koliko mu je delova podmornice ostalo nepotopljeno. Zatim ispisati $9$ horizontalnih crtica, a nakon toga i matricu igrača broj $2$ i koliko je njemu ostalo nepotopljenih delova podmornice.

Primer

Ulaz

0 0 0
2 1 1
2 3 1
4 0 0
0 2 1
1 3 1
0 3
2 1
3 1
1 1
4 1

Izlaz

1 1 1 0 0
0 0 0 0 0
0 0 0 1 0
0 0 0 1 0
0 1 0 1 0
7
---------
0 0 1 0 0
0 0 1 1 0
0 0 1 1 0
0 0 0 1 0
1 0 1 0 0
8

Primer

Ulaz

2 1 1
2 2 1
2 3 1
4 1 0
3 1 0
2 1 0
0 2
2 3
3 3
1 3
4 1

Izlaz

0 0 0 0 0 
0 0 0 0 0 
0 1 1 0 0 
0 1 1 0 0 
0 1 1 1 0 
7
---------
0 0 0 0 0 
0 0 0 0 0 
0 1 1 1 0 
0 1 1 1 0 
0 0 1 1 0 
8

Pokemoni

Svaki Pokemon ima svoj napad i odbranu (pozitivne celobrojne vrednosti). Trener Pokemona ima spisak protivničkih Pokemona i zna podatke o njihovom napadu i odbrani. On želi za svakog svog Pokemona da odredi protivničkog Pokemona koji ima isti napad kao taj trenerov Pokemon. Takođe, trener želi da odredi protivničkog Pokemona koji ima istu odbranu kao taj trenerov Pokemon. Napisati program koji pomaže treneru u njegovoj zamisli.

Napomena: Zadatak se mora raditi korišćenjem dinamičke alokacije i binarne pretrage. Pretpostaviti da svi Pokemoni imaju različite napade, kao i da svi Pokemoni imaju različite odbrane.

Ulaz

Sa standardnog ulaza se učitava broj protivničkih Pokemona $n$ ($1 \leq n \leq 10^9$). Zatim u sledećih $n$ redova dati su podaci o napadima protivničkih Pokemona, sortirani rastuće - ime (niska od najviše $20$ karaktera) i napad (pozitivan ceo broj). Nakon toga, u sledećih $n$ redova dati su podaci o odbranama protivničkih Pokemona, sortirani rastuće - ime i odbrana (pozitivan ceo broj).

Nakon toga unosi se broj trenerovih Pokemona $m$, a zatim i podaci o $m$ trenerovih Pokemona - ime, napad i odbrana.

Izlaz

Na standardni izlaz ispisati za svakog od trenerovih Pokemona ime protivničkog Pokemona koji ima isti napad kao taj trenerov Pokemon, kao i ime protivničkog Pokemona koji ima istu odbranu kao taj trenerov Pokemon, razdvojena razmakom.

U slučaju da ne postoji protivnički Pokemon koji zadovoljava jedan od uslova, ispisati NEMA.

U slučaju greške prekinuti program sa status kodom EXIT_FAILURE (1).

Primer

Ulaz

4
Snorlax 100
Bulbasaur 250
Pikachu 400
Charizard 500
Pikachu 300
Charizard 400
Bulbasaur 450
Snorlax 700
3
Jigglypuff 500 700
Psyduck 400 50
Zubat 200 450

Izlaz

Charizard Snorlax
Pikacu NEMA
NEMA Bulbasaur

Primer

Ulaz

5
Snorlax 200
Bulbasaur 250
Pikachu 300
Venosaur 400
Charizard 600
Pikachu 300
Venosaur 350
Charizard 400
Bulbasaur 550
Snorlax 800
4
Blastoise 350 350
Jigglypuff 200 100
Psyduck 400 350
Zubat 850 450

Izlaz

NEMA Venosaur
Snorlax NEMA
Venosaur Venosaur
NEMA NEMA

Ratatui

U restoranu kod Gustoa svakodnevno stiže veliki broj porudžbina. Ipak, postoji samo jedna mušterija koja naručuje jelo Ratatui - čuveni kritičar hrane Ivan. U trenutku kada Ivan naruči Ratatui, radnici restorana žele da sortiraju do tada pristigle porudžbine opadajući po ceni. U slučaju da postoje dve porudžbine sa istom cenom, sortirati ih rastući leksikografski.

Napomena: Zadatak se mora rešiti korišćenjem dinamičke alokacije memorije.

Ulaz

Sa standardnog ulaza se učitavaju podaci o porudžbinama sve do unosa porudžbine Ratatui. Svaka porudžbina ima ime (niska od najviše $20$ karaktera) i cenu (pozitivan ceo broj).

Izlaz

Na standardni izlaz ispisati porudžbine sortirane u traženom poretku (bez porudžbine Ratatui).

U slučaju greške, prekinuti program sa izlaznim kodom EXIT_FAILURE (1).

Primer

Ulaz

Pizza 450
Spageti 300
Snicla 500
Lazanje 450
Ratatui 1000 

Izlaz

Snicla 500
Lazanje 450
Pizza 450
Spageti 300

Primer

Ulaz

Pizza 550
Spageti 200
Snicla 400
Lazanje 150
Sarma 400
Biftek 600
Ratatui 1000 

Izlaz

Biftek 600
Pizza 550
Sarma 400
Snicla 400
Spageti 200
Lazanje 150

Primer

Ulaz

Ratatui 800

Izlaz