1 sadržaj - tehnička Škola...
TRANSCRIPT
1 Sadržaj
2
Sadržaj
Algoritmi trikovi za natjecanje
DUMP Društvo mladih programera
predstavlja ciklus predavanja
www.dump-split.com
3 Sadržaj
Sadržaj
Pravila za natjecanje .................................................................................. 4
Primjer pravilno napisanog programa ........................................................ 5
Zadatak ...................................................................................................................... 5
Rješenje u programskom jeziku C ......................................................................................... 5
Rješenje u programskom jeziku C++ .................................................................................... 5
Priprema za natjecanje .............................................................................. 6
Zadatak: Knjige .......................................................................................... 7
Zadatak ...................................................................................................................... 7
Primjer test podataka ................................................................................................................. 7
Zadatak: Igra .............................................................................................. 8
Zadatak ...................................................................................................................... 8
Primjer test podataka ................................................................................................................. 8
Zadatak: Opstanak ..................................................................................... 9
Zadatak ...................................................................................................................... 9
Primjer test podataka ................................................................................................................. 9
Zadatak: Slovo ......................................................................................... 10
Zadatak ................................................................................................................... 10
Primjer test podataka .............................................................................................................. 10
Zadatak: Trokut ........................................................................................ 11
Zadatak ................................................................................................................... 11
Sadržaj
4
Pravila za natjecanje
Sadržaj
Pravila za natjecanje Kod svakog pojedinog zadatka obratite pozornost na poglavlja ulazni podaci i
izlazni podaci. Tu su definirana pravila vezana za format ulaznih i izlaznih podataka
koji mora biti strogo poštovan kako bi vaša rješenja bila točno evaluirana. Za
ilustraciju i bolje razumijevanje pogledajte poglavlje primjeri test podataka.
Ulaz i izlaz treba se odvijati preko standardnog ulaza i standardnog izlaza (to znači
cin, cout, printf i/ili scanf). Vaš program sa standardnog ulaza (cin ili scanf) mora
očekivati samo ulazne podatke, a na standardni izlaz (cout ili printf) mora ispisivati
samo izlazne podatke. Ako vaš program bude čekao na unos nečeg drugog osim
ulaznih podataka ili ispisivao nešto drugo osim izlaznih podataka(npr. "Unesite
brojeve...", "Rješenje je..." i slično), nećete dobiti bodove za taj zadatak, jer evaluator
to ne očekuje.
Vaš program treba biti pisan u programskom jeziku C ili C++ i mora regularno
završiti svoje izvođenje. Program se treba izvršiti do kraja tj. do return 0; ili } na
kraju funkcije 'main' koja treba biti deklarirana kao int main(). Pogledajte priložene
primjere.
Za dodjelu bodova važan je samo točan ispis rezultata. Prilikom evaluacije nitko
neće gledati vaš izvorni kôd već će on samo biti korišten za izradu izvršne datoteke,
a bodove za pojedini test podatak će dobiti samo oni programi koji budu generirali
točan rezultat.
Obratite pažnju da svi zadaci ne nose jednak broj bodova. Lakši i brže rješivi zadaci
nose manje bodova, a teži zadaci za čije je rješavanje potrebno više vremena, znanja
i koncentracije nose više bodova.
Prilikom rješavanja zadataka preporučuje se korištenje olovke i papira za skiciranje
i razradu algoritma.
Uvod
Pravila za natjecanje 5 Primjer pravilno napisanog programa
Primjer pravilno napisanog programa
Zadatak Napišite program koji će zbrojiti i oduzeti dva cijela broja.
Ulaz
U prvom retku se nalaze dva cijela broja A i B, međusobno odvojena jednim
razmakom.
Izlaz
U prvi redak ispišite zbroj, a u drugi redak razliku brojeva A i B.
Rješenje u programskom jeziku C
Rješenje u programskom jeziku C++
Pravila su preuzeta od Hrvatskog saveza informatičara (www.hsin.hr) i prilagođena
za DUMP-ova natjecanja.
#include <iostream>
using namespace std;
int main()
{
int a, b;
cin >> a >> b;
cout << a+b << endl;
cout << a-b << endl;
}
#include <stdio.h>
int main()
{
int a, b;
scanf("%d%d", &a, &b);
printf("%d\n", a+b);
printf("%d\n", a-b);
return 0;
}
6
Zadatak
Priprema za natjecanje
U tablici možete pogledati ograničenja za zadatke:
Zadatak Naziv
izvornog kôda
Ulazni podaci
Izlazni podaci
Vremensko ograničenje
Memorijsko ograničenje
Broj bodova
Knjige knjige.cpp knjige.c
Standardni ulaz
Standardni izlaz
1 sekunda 32 MB 20
Igra igra.cpp igra.c
Standardni ulaz
Standardni izlaz
1 sekunda 32 MB 30
Opstanak opstanak.cpp opstanak.c
Standardni ulaz
Standardni izlaz
1 sekunda 32 MB 40
Slovo slovo.cpp slovo.c
Standardni ulaz
Standardni izlaz
1 sekunda 32 MB 50
Trokut trokut.cpp trokut.c
Standardni ulaz
Standardni izlaz
1 sekunda 32 MB 60
Natjecanje
7 Zadatak
Zadatak: Knjige
Zadatak Uskoro započinje škola i mali Žan Pjer Del Mondo mora kupiti knjige (zbog
recesije naravno). Kako mali Žan do sada nikada nije kupovao knjige,
zamolilo je vas da mu napišete program koji će mu reći kolika je ukupna
cijena knjiga i kolika je bila prosječna cijena knjige.
Ulaz
U prvoj liniji ulaza nalazi se N (1 <= N <= 100 000), broj knjiga.
U svakoj od slijedećih N linija nalazi se cijena svake knjige.
Izlaz
U prvoj liniji potrebno je ispisati ukupnu cijenu svih knjiga.
U drugoj liniji potrebno je ispisati prosječnu cijenu knjige.
Primjer test podataka
Primjer 1 Primjer 2 Primjer 3
Ulaz Ulaz Ulaz
2 99 78
3 56 73 54
4 55.6 77.3 45.42 42
Izlaz
Izlaz
Izlaz
177 88.5
183 61
220.32 55.08
Zadaci
8
Zadatak: Igra
Zadatak
Zadatak: Igra
Zadatak Svaki dan, prije škole, mali Žan Pjer Del Mondo igra sa svojim prijateljima
poznatu igru Kamen-škare-papir. U igri dva igrača pokazuju jedan od
znakova (kamen, škare ili papir). Škare pobjeđuju papir, papir pobjeđuje
kamen, a kamen pobjeđuje škare. Ako igrači pokažu isti znak, borba se
proglašava neodlučenom.
Žan nije baš dobar u toj igri i stalno gubi, pa moli vas da mu pomognete i
napišete program koji će ga uvježbati. Žan je odlučilo da ćete simulirati jednu
partiju, tako što će se on u R rundi boriti protiv svojih N prijatelja. Svaka
pobjeda nosi mu 2 boda, a neodlučena runda 1 bod.
Potrebno je izračunati koliko Žan na kraju partije ima bodova.
Ulaz
U prvom redu ulaza nalazi se cijeli broj R (1 ≤ R ≤ 1000), broj odigranih rundi.
U drugom redu ulaza nalazi se niz od R znakova 'S', 'P' ili 'K'. Znakovi
predstavljaju simbole koje je Žan pokazao u pojedinoj rundi. Znak 'S'
predstavlja škare, 'P' papir, a 'K' kamen.
U trećem redu ulaza nalazi se cijeli broj N (1 ≤ N ≤ 1000), broj prijatelja.
U svakom od sljedećih N redova nalazi se niz od po R znakova 'S', 'P' ili 'K'. To
su simboli što ih je jedan prijatelj pokazao u svakoj rundi.
Izlaz
U prvoj i jedinoj liniji potrebno je ispisati koliko je bodova osvojio Žan Pjer
Del Mondo.
Primjer test podataka Primjer 1 Primjer 2 Primjer 3
Ulaz Ulaz Ulaz
3 SSP 1 KKK
5 SSKKP 2 KKPPP SSPKP
5 SSKKP 4 PPKKS PPPSS KPPKP PSKKP
Izlaz
Izlaz
Izlaz
2 5 22
Zadatak: Opstanak 9 Zadatak
Zadatak: Opstanak
Zadatak Mali Žan Pjer Del Mondo gledao je film Dr. Strangelove i u filmu prijeti smrt
svima onima koji se ne uspiju sakriti u špilje. Zgrožen tom činjenicom mali
Žan vas moli da mu pomognete i izračunate koliko će parova nastati u
špiljama i tako sačuvati ljudsku vrstu.
U špilje se skrilo N ljudi. Svim ženama u špilji ime završava na 'a', a
muškarcima na 'o'. Pomognite malom Žanu i napišite program koji
izračunava najveći mogući broj parova u špiljama. (Homoseksualne veze nisu
dopuštene i naravno nema varanja partnera).
Ulaz
U prvoj liniji ulaza nalazi se N (1 <= N <= 100 000), broj ljudi.
U svakoj od slijedećih N linija nalazi se ime svakog čovjeka.
Izlaz
U prvoj i jedinoj liniji potrebno je ispisati koliko najviše parova može nastati
u špiljama.
Primjer test podataka Primjer 1 Primjer 2 Primjer 3
Ulaz Ulaz Ulaz
3 Ivana Jelena Nebo
5 Ana Vilma Marko Franjo Jasna
4 Matea Bea Antonio Josko
Izlaz
Izlaz
Izlaz
1 2 2
10
Zadatak: Slovo
Zadatak
Zadatak: Slovo
Zadatak Mali Žan Pjer Del Mondo postao je fasciniran slovima i riječima. Nova
zanimacija preko sata vjeronauka mu je brojanje slova u rečenicama iz Novog
zavjeta i cilj mu je vidjeti koje se slovo najviše puta pojavljuje. Kako to zna biti
jako mukotrpan proces, zamolio je vas da mu napravite program koji ce mu
pomoći u tome.
Potrebno je napisati program koji ispisuje koje se slovo najviše ponavlja u
nekoj rečenici (ili riječi).
Ulaz
U prvoj i jedinoj liniji ulaza nalazi se rečenica(ili riječ). Ni jedna rečenica
(riječ) neće sadržavati više od 1 000 000 velikih slova engleske abecede.
Izlaz
U prvoj i jedinoj liniji potrebno je ispisati slovo koje se ponavlja najviše puta,
ako ima više takvih slova, potrebno je ispisati sva.
Primjer test podataka Primjer 1 Primjer 2 Primjer 3
Ulaz Ulaz Ulaz
PROGRAMIRANJE
ZAN PJER DEL MONDO
STO JE DANAS LIJEP I SUNCAN DAN
Izlaz
Izlaz
Izlaz
R A N
O S T
Zadatak: Trokut 11 Zadatak
Zadatak: Trokut
Zadatak Malom Žan Pjer Del Mondeu, učiteljica je zadala jako težak zadatak. U
koordinatnom sustavu u kojem je upisano N točaka treba naći trokut s
najvećom površinom. Kako mali Žan pojma nema riješiti zadatak, a želi
isprobati svoj najnoviji gadget KillMathTeacher x4800, moli vas da mu
pomognete i riješite zadatak.
Potrebno je napisati program koji izračuna najveću površinu trokuta.
Udaljenost dvije točke u koordinatnom sustavu računa se formulom
(𝑥1 − 𝑥2)2 + (𝑦1 − 𝑦2)2
Površina trokuta računa se formulom 𝑃 = 𝑠 𝑠 − 𝑎 𝑠 − 𝑏 (𝑠 − 𝑐) gdje
𝑠 = 𝑎+𝑏+𝑐
2
Ulaz
U prvoj liniji ulaza nalazi se N (1 <= N <= 100), broj točaka.
U svakoj od slijedećih N linija nalaze se x i y koordinate točke.
Izlaz
U prvoj liniji potrebno je ispisati površinu največeg trokuta.
U iduće tri linije potrebno je ispisati koordinate največeg trokuta.
Primjer test podataka Primjer 1 Primjer 2 Primjer 3
Ulaz Ulaz Ulaz
3 1 2 1 1 2 5
5 2 4 3 1 5 6 7 1 2 8
7 11 1 10 2 1 1 3 5 8 1 7 2 3 3
Izlaz
Izlaz
Izlaz
0.5 1 1 2 5 1 2
14.0 3 1 7 1 2 8
20.0 11 1 3 5 1 1