USP Januar 1 (2026)


Kupovina

Kupac ima spisak namirnica koje želi da kupi u prodavnici. Na spisku se pored naziva namirnice nalazi i količina koju kupac želi da kupi. Na sajtu prodavnice se nalazi cenovnik na kome su navedene cene namirnica. Kupac želi da sortira namirnice sa svog spiska po ukupnoj ceni nerastuće, a ukoliko su ukupne cene iste leksikografski rastuće. Napisati program koji će pomoći kupcu da ostvari svoj cilj.

Poeni po delovima zadatka:

Ulaz

Kao argumenti komandne linije se zadaju imena dva fajla. U prvom se nalazi najpre broj namirnica, a zatim i spisak kupca koji u svakom redu sadrži ime namirnice (niska bez belina maksimalne dužine 31) i količinu (ceo broj). U drugom fajlu se nalazi broj artikala u prodavnici, a zatim i cenovnik koji u svakom redu sadrži ime namirnice (niska bez belina maksimalne dužine 31) i cenu (realan broj).

Izlaz

U fajl spisak_sortirano.txt upisati spisak namirnica sortiran po datim kriterijumima. U slučaju greške, na standardni izlaz za greške ispisati -1 i prekinuti program sa izlaznim kodom neuspeha (1).

Primer

command line

./a.out spisak.txt cenovnik.txt 

spisak.txt

5
cokolada 5
sir 1
hleb 3
voda 6
mleko 2

cenovnik.txt

7
mleko 85.99
cokolada 250.99
pasteta 70.99
sir 170.98
voda 70.99
hleb 49.99
kecap 139.99

spisak_formatirano.txt

cokolada
voda
mleko
sir
hleb

Primer

command line

./a.out spisak.txt cenovnik.txt 

spisak.txt

5
cokolada 5
sir 1
kafa 3
voda 6
mleko 2

spisak.txt

7
mleko 85.99
cokolada 250.99
pasteta 70.99
sir 170.98
voda 70.99
hleb 49.99
kecap 139.99

stderr

-1

Objašnjenje

Kafa ne postoji na cenovniku.


Sortiranje fajlova

Radnik u gradskoj arhivi želi da sortira fajlove na svom računaru. Za svaki fajl je poznat jedinstven identifikator. Napisati program koji sortira fajlove korišćenjem algoritma insertion sort nad listom. Program treba da implementira sledeće funkcionalnosti:

Napomena: Zadatak se mora uraditi korišćenjem listi. Algoritam insertion sort funkcioniše na sledeći način:

Ulaz

Sa standardnog ulaza se učitava lista sa identifikatorima fajlova, a zatim i jedan karakter koji zadaje opciju kako sortirati fajlove:

Izlaz

Na standardni izlaz ispisati sortiranu listu fajlova. U slučaju greške, na standardni izlaz za greške ispisati -1 i prekinuti program sa izlaznim kodom neuspeha (1).

Primer

stdin

[2, 5, 6, 4, 1, 3]
r

stdout

[1, 2, 3, 4, 5, 6]

Primer

stdin

[2, 5, 6, 4, 1, 3]
o

stdout

[6, 5, 4, 3, 2, 1]

Primer

stdin

[2, 5, 6, 4, 1, 3]
p

stderr

-1

Binarno stablo

Neka je dato stablo koje u svakom čvoru čuva vrednost 0 ili 1. Stablo se kreira tako što se u njega ubacuju binarni brojevi, pri čemu se svaki bit broja koristi za izbor grane (levo za 0, desno za 1) prilikom ubacivanja. Na taj način, svaka putanja od korena do lista je jedan broj u binarnom zapisu. Koren sadrži nevalidnu vrednost (-1) u svom čvoru. Primetiti da se u stablu ne mogu nalaziti duplikati.

Primer stabla u kome se nalaze brojevi 00, 01 i 11:

   -1
   / \ 
  0   1 
 / \   \ 
0   1   1

Implementirati sledeće funkcije:

Ulaz

Sa standardnog ulaza se učitava broj binarnih brojeva $n$, koji se ubaciju u stablo, a zatim i $n$ binarnih brojeva iste dužine. Nakon toga, učitava se jedna od sledećih opcija:

Izlaz

Na standardni izlaz ispisati rezultat poziva funkcije u zavisnosti od opcije. Specijalno, za funkciju svi_parni ispisati DA ukoliko su svi brojevi u stablu parni, a NE inače.

Primer 1

stdin

5
0010 
0110 
0111 
1100
1101
p

stdout

NE

Primer 2

stdin

5
0010 
0110 
0111 
1100
1101
i

stdout

2
6
7
12
13

Primer 3

stdin

5
0010 
0110 
0111 
1100
1101
n 0010 

stdout


1101

Primer 4

stdin

2
0010
0000
p

stdout

DA 

Tekst editor

Napisati klasu tekst_editor koja implementira osnovne funkcionalnosti tekst editora:

Funkcije pomeri_levo, pomeri_desno, upisi i obrisi treba da rade u vremenskoj složenosti $O(1)$, dok funkcija tekst treba da radi u vremenskoj složenosti $O(n)$, gde je $n$ dužina trenutnog teksta u editoru (3 poena).

Ulaz

Sa standardnog ulaza se, sve do kraja unosa, učitavaju naredbe u formatu:

Izlaz

Na standardni izlaz ispisati trenutni tekst u editoru nakon svakeke naredbe p.

Primer

stdin

u 1
u 2
u 3
p
l
l
u a
u b
p
d
u c
p
l
b
b
p

stdout

123
1ab23
1ab2c3
1ac3