| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1 초 | 512 MB | 75 | 40 | 32 | 51.613% |
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