시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
---|---|---|---|---|---|
1 초 | 512 MB | 65 | 22 | 17 | 34.694% |
Napišite program koji će simulirati izvršavanje naredbi za rezerviranje i oslobadanje memorije. Memorija računala je niz od 100 000 uzastopnih memorijskih lokacija, redom označenih adresama od 1 do 100 000. Na početku su sve lokacije slobodne. Naredbe koje se mogu pojaviti su:
var=malloc(s);
Ova naredba pronalazi prvi niz od s
uzastopnih slobodnih memorijskih lokacija i rezervira ih. Funkcija vraća adresu prve rezervirane lokacije. Ako ne postoji niz od s
uzastopnih slobodnih memorijskih lokacija, onda funkcija ništa ne rezervira te vraća vrijednost 0.free(var);
Ova naredba oslobada memorijske lokacije dodijeljene varijabli var (prethodnim pozivom funkcije malloc
) i postavlja vrijednost varijable var
na 0. Ako je vrijednost varijable var
već jednaka 0 prije poziva funkcije, onda funkcija ne radi ništa.print(var);
Ova naredba ispisuje vrijednost varijable var
.Svaka naredba završava znakom “;
” (točkazarez). Varijable su nizovi sastavljeni od točno 4 mala slova engleske abecede. Sve varijable su na početku inicijalizirane na vrijednost 0.
U prvom redu se nalazi cijeli broj n (1 ≤ n ≤ 100 000) – broj naredbi. U j-tom od sljedećih n redova se nalazi j-ta naredba, formatirana točno kao u tekstu zadatka bez viška praznih znakova. Ukupni broj različitih varijabli će biti manji ili jednak od 1000. Barem jedna od naredbi će biti naredba print
. U svakoj naredbi malloc
vrijedi 100 ≤ s ≤ 100 000.
U j-ti red ispišite rezultat j-te po redu naredbe print
.
3 mama=malloc(140); tata=malloc(120); print(tata);
141
5 aabb=malloc(50001); bbaa=malloc(50000); print(aabb); free(aabb); print(bbaa);
1 0