시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초 128 MB525997022.654%

문제

메모리 할당 명령을 시뮬레이팅하는 프로그램을 작성하시오.

메모리는 100,000개의 연속된 공간이고, 1번부터 100,000번까지 번호가 매겨져 있다. 초기에 모든 공간은 할당되지 않은 상태이다.

명령어의 종류는 다음 중 하나이다.

  1. var=malloc(size);
    • 이 함수은 처음 등장하는 size개의 연속된 공간을 찾아, 할당해주는 함수이다. 이 함수의 리턴값은 할당된 공간의 제일 처음 주소이다. 만약, 할당해줄 수 있는 공간이 없다면 0을 리턴한다. (100 ≤ size ≤ 100,000)
  2. free(var);
    • 이 함수는 이전에 malloc을 통해 var에 할당된 공간을 할당 해제시켜주고, var0을 저장하는 함수이다. 만약, var가 이미 0이라면, 아무 일도 일어나지 않는다.
  3. print(var);
    • var에 저장된 값을 출력하는 함수이다.

모든 명령은 세미콜론(';')으로 끝난다. 변수는 알파벳 소문자로 이루어져 있으며, 항상 네글자이다. 서로 다른 변수의 개수는 1,000개보다 작거나 같다. 모든 변수는 0으로 초기화되어있다.

입력

첫째 줄에 명령의 개수 N이 주어진다. (1 ≤ N ≤ 100,000)

다음 N개의 줄에는 명령이 수행된 순서대로 하나씩 주어진다.

print는 한 번 이상 주어진다.

출력

print가 나올 때 마다 결과를 한 줄에 하나씩 출력한다.

예제 입력 1

3
mama=malloc(140);
tata=malloc(120);
print(tata);

예제 출력 1

141

예제 입력 2

5
aabb=malloc(50001);
bbaa=malloc(50000);
print(aabb);
free(aabb);
print(bbaa);

예제 출력 2

1
0

예제 입력 3

5
baka=malloc(214);
baka=malloc(123);
free(baka);
deda=malloc(100);
print(deda);

예제 출력 3

215
W3sicHJvYmxlbV9pZCI6IjMyMTciLCJwcm9ibGVtX2xhbmciOiIwIiwidGl0bGUiOiJtYWxsb2MiLCJkZXNjcmlwdGlvbiI6IjxwPlx1YmE1NFx1YmFhOFx1YjlhYyBcdWQ1NjBcdWIyZjkgXHViYTg1XHViODM5XHVjNzQ0IFx1YzJkY1x1YmJhY1x1YjgwOFx1Yzc3NFx1ZDMwNVx1ZDU1OFx1YjI5NCBcdWQ1MDRcdWI4NWNcdWFkZjhcdWI3YThcdWM3NDQgXHVjNzkxXHVjMTMxXHVkNTU4XHVjMmRjXHVjNjI0LjxcL3A+XHJcblxyXG48cD5cdWJhNTRcdWJhYThcdWI5YWNcdWIyOTQgMTAwLDAwMFx1YWMxY1x1Yzc1OCBcdWM1ZjBcdWMxOGRcdWI0MWMgXHVhY2Y1XHVhYzA0XHVjNzc0XHVhY2UwLCAxXHViYzg4XHViZDgwXHVkMTMwIDEwMCwwMDBcdWJjODhcdWFlNGNcdWM5YzAgXHViYzg4XHVkNjM4XHVhYzAwIFx1YjllNFx1YWNhOFx1YzgzOCBcdWM3ODhcdWIyZTQuIFx1Y2QwOFx1YWUzMFx1YzVkMCBcdWJhYThcdWI0ZTAgXHVhY2Y1XHVhYzA0XHVjNzQwIFx1ZDU2MFx1YjJmOVx1YjQxOFx1YzljMCBcdWM1NGFcdWM3NDAgXHVjMGMxXHVkMGRjXHVjNzc0XHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWJhODVcdWI4MzlcdWM1YjRcdWM3NTggXHVjODg1XHViOTU4XHViMjk0IFx1YjJlNFx1Yzc0YyBcdWM5MTEgXHVkNTU4XHViMDk4XHVjNzc0XHViMmU0LjxcL3A+XHJcblxyXG48b2w+XHJcblx0PGxpPjxjb2RlPnZhcj1tYWxsb2Moc2l6ZSk7PFwvY29kZT5cclxuXHJcblx0PHVsPlxyXG5cdFx0PGxpPlx1Yzc3NCBcdWQ1NjhcdWMyMThcdWM3NDAgXHVjYzk4XHVjNzRjIFx1YjRmMVx1YzdhNVx1ZDU1OFx1YjI5NCA8Y29kZT5zaXplPFwvY29kZT5cdWFjMWNcdWM3NTggXHVjNWYwXHVjMThkXHViNDFjIFx1YWNmNVx1YWMwNFx1Yzc0NCBcdWNjM2VcdWM1NDQsIFx1ZDU2MFx1YjJmOVx1ZDU3NFx1YzhmY1x1YjI5NCBcdWQ1NjhcdWMyMThcdWM3NzRcdWIyZTQuIFx1Yzc3NCBcdWQ1NjhcdWMyMThcdWM3NTggXHViOWFjXHVkMTM0XHVhYzEyXHVjNzQwIFx1ZDU2MFx1YjJmOVx1YjQxYyBcdWFjZjVcdWFjMDRcdWM3NTggXHVjODFjXHVjNzdjIFx1Y2M5OFx1Yzc0YyBcdWM4ZmNcdWMxOGNcdWM3NzRcdWIyZTQuIFx1YjljY1x1YzU3ZCwgXHVkNTYwXHViMmY5XHVkNTc0XHVjOTA0IFx1YzIxOCBcdWM3ODhcdWIyOTQgXHVhY2Y1XHVhYzA0XHVjNzc0IFx1YzVjNlx1YjJlNFx1YmE3NCA8Y29kZT4wPFwvY29kZT5cdWM3NDQgXHViOWFjXHVkMTM0XHVkNTVjXHViMmU0LiAoMTAwICZsZTsgPGNvZGU+c2l6ZTxcL2NvZGU+ICZsZTsgMTAwLDAwMCk8XC9saT5cclxuXHQ8XC91bD5cclxuXHQ8XC9saT5cclxuXHQ8bGk+PGNvZGU+ZnJlZSh2YXIpOzxcL2NvZGU+XHJcblx0PHVsPlxyXG5cdFx0PGxpPlx1Yzc3NCBcdWQ1NjhcdWMyMThcdWIyOTQgXHVjNzc0XHVjODA0XHVjNWQwIDxjb2RlPm1hbGxvYzxcL2NvZGU+XHVjNzQ0IFx1ZDFiNVx1ZDU3NCA8Y29kZT52YXI8XC9jb2RlPlx1YzVkMCBcdWQ1NjBcdWIyZjlcdWI0MWMgXHVhY2Y1XHVhYzA0XHVjNzQ0IFx1ZDU2MFx1YjJmOSBcdWQ1NzRcdWM4MWNcdWMyZGNcdWNmMWNcdWM4ZmNcdWFjZTAsIDxjb2RlPnZhcjxcL2NvZGU+XHVjNWQwIDxjb2RlPjA8XC9jb2RlPlx1Yzc0NCBcdWM4MDBcdWM3YTVcdWQ1NThcdWIyOTQgXHVkNTY4XHVjMjE4XHVjNzc0XHViMmU0LiBcdWI5Y2NcdWM1N2QsIDxjb2RlPnZhcjxcL2NvZGU+XHVhYzAwIFx1Yzc3NFx1YmJmOCA8Y29kZT4wPFwvY29kZT5cdWM3NzRcdWI3N2NcdWJhNzQsIFx1YzU0NFx1YmIzNCBcdWM3N2NcdWIzYzQgXHVjNzdjXHVjNWI0XHViMDk4XHVjOWMwIFx1YzU0YVx1YjI5NFx1YjJlNC48XC9saT5cclxuXHQ8XC91bD5cclxuXHQ8XC9saT5cclxuXHQ8bGk+PGNvZGU+cHJpbnQodmFyKTs8XC9jb2RlPlxyXG5cdDx1bD5cclxuXHRcdDxsaT48Y29kZT52YXI8XC9jb2RlPlx1YzVkMCBcdWM4MDBcdWM3YTVcdWI0MWMgXHVhYzEyXHVjNzQ0IFx1Y2Q5Y1x1YjgyNVx1ZDU1OFx1YjI5NCBcdWQ1NjhcdWMyMThcdWM3NzRcdWIyZTQuPFwvbGk+XHJcblx0PFwvdWw+XHJcblx0PFwvbGk+XHJcbjxcL29sPlxyXG5cclxuPHA+XHViYWE4XHViNGUwIFx1YmE4NVx1YjgzOVx1Yzc0MCBcdWMxMzhcdWJiZjhcdWNmNWNcdWI4NjAoJiMzOTs8Y29kZT47PFwvY29kZT4mIzM5OylcdWM3M2NcdWI4NWMgXHViMDVkXHViMDljXHViMmU0LiBcdWJjYzBcdWMyMThcdWIyOTQgXHVjNTRjXHVkMzBjXHViY2IzIFx1YzE4Y1x1YmIzOFx1Yzc5MFx1Yjg1YyBcdWM3NzRcdWI4ZThcdWM1YjRcdWM4MzggXHVjNzg4XHVjNzNjXHViYTcwLCBcdWQ1NmRcdWMwYzEgXHViMTI0XHVhZTAwXHVjNzkwXHVjNzc0XHViMmU0LiBcdWMxMWNcdWI4NWMgXHViMmU0XHViOTc4IFx1YmNjMFx1YzIxOFx1Yzc1OCBcdWFjMWNcdWMyMThcdWIyOTQgMSwwMDBcdWFjMWNcdWJjZjRcdWIyZTQgXHVjNzkxXHVhYzcwXHViMDk4IFx1YWMxOVx1YjJlNC4gXHViYWE4XHViNGUwIFx1YmNjMFx1YzIxOFx1YjI5NCAwXHVjNzNjXHViODVjIFx1Y2QwOFx1YWUzMFx1ZDY1NFx1YjQxOFx1YzViNFx1Yzc4OFx1YjJlNC48XC9wPlxyXG4iLCJpbnB1dCI6IjxwPlx1Y2NhYlx1YzlmOCBcdWM5MDRcdWM1ZDAgXHViYTg1XHViODM5XHVjNzU4IFx1YWMxY1x1YzIxOCBOXHVjNzc0IFx1YzhmY1x1YzViNFx1YzljNFx1YjJlNC4gKDEgJmxlOyBOICZsZTsgMTAwLDAwMCk8XC9wPlxyXG5cclxuPHA+XHViMmU0XHVjNzRjIE5cdWFjMWNcdWM3NTggXHVjOTA0XHVjNWQwXHViMjk0IFx1YmE4NVx1YjgzOVx1Yzc3NCBcdWMyMThcdWQ1ODlcdWI0MWMgXHVjMjFjXHVjMTFjXHViMzAwXHViODVjIFx1ZDU1OFx1YjA5OFx1YzUyOSBcdWM4ZmNcdWM1YjRcdWM5YzRcdWIyZTQuPFwvcD5cclxuXHJcbjxwPjxjb2RlPnByaW50PFwvY29kZT5cdWIyOTQgXHVkNTVjIFx1YmM4OCBcdWM3NzRcdWMwYzEgXHVjOGZjXHVjNWI0XHVjOWM0XHViMmU0LjxcL3A+XHJcbiIsIm91dHB1dCI6IjxwPjxjb2RlPnByaW50PFwvY29kZT5cdWFjMDAgXHViMDk4XHVjNjJjIFx1YjU0YyBcdWI5YzhcdWIyZTQgXHVhY2IwXHVhY2ZjXHViOTdjIFx1ZDU1YyBcdWM5MDRcdWM1ZDAgXHVkNTU4XHViMDk4XHVjNTI5IFx1Y2Q5Y1x1YjgyNVx1ZDU1Y1x1YjJlNC48XC9wPlxyXG4iLCJoaW50IjoiIiwib3JpZ2luYWwiOiIwIiwiaHRtbF90aXRsZSI6IjAiLCJwcm9ibGVtX2xhbmdfdGNvZGUiOiJLb3JlYW4ifSx7InByb2JsZW1faWQiOiIzMjE3IiwicHJvYmxlbV9sYW5nIjoiMSIsInRpdGxlIjoibWFsbG9jIiwiZGVzY3JpcHRpb24iOiI8cD5Xcml0ZSBhIHByb2dyYW0gdGhhdCB3aWxsIHNpbXVsYXRlIHRoZSBleGVjdXRpb24gb2YgbWVtb3J5IGFsbG9jYXRpb24gY29tbWFuZHMuJm5ic3A7PFwvcD5cclxuXHJcbjxwPk1lbW9yeSBpcyBhIHNlcXVlbmNlIG9mIDEwMCwwMDAgY29udGludW91cyBtZW1vcnkgbG9jYXRpb25zLCBudW1iZXJlZCBmcm9tIDEgdG8gMTAwLDAwMC4mbmJzcDs8XC9wPlxyXG5cclxuPHA+SW4gdGhlIGJlZ2lubmluZywgYWxsIGxvY2F0aW9ucyBhcmUgZnJlZS4mbmJzcDs8XC9wPlxyXG5cclxuPHA+Q29tbWFuZHMgdGhhdCBjYW4gb2NjdXIgYXJlOiZuYnNwOzxcL3A+XHJcblxyXG48cD4xLikgdmFyPW1hbGxvYyhzaXplKTsmbmJzcDs8XC9wPlxyXG5cclxuPHA+VGhpcyBmdW5jdGlvbiBmaW5kcyB0aGUgZmlyc3Qgc2l6ZSAoMTAwICZsZTsgc2l6ZSAmbGU7IDEwMCwwMDApIGNvbnRpbnVvdXMgZnJlZSBsb2NhdGlvbnMsIGFuZCBhbGxvY2F0ZXMgdGhlbS4gUmV0dXJuIHZhbHVlIG9mIHRoaXMgZnVuY3Rpb24gaXMgZWl0aGVyIHRoZSBhZGRyZXNzIG9mIHRoZSBmaXJzdCBhbGxvY2F0ZWQgbG9jYXRpb24gb3IgMCBpZiB0aGVyZSBpcyBubyBzdWNoIHNlcXVlbmNlLiZuYnNwOzxcL3A+XHJcblxyXG48cD4yLikgZnJlZSh2YXIpOyZuYnNwOzxcL3A+XHJcblxyXG48cD5UaGlzIGZ1bmN0aW9uIGZyZWVzIGFsbCB0aGUgbWVtb3J5IGxvY2F0aW9ucyBhc3NpZ25lZCB0byB0aGUgdmFyaWFibGUgdmFyIChieSBwcmV2aW91cyB1c2Ugb2YgbWFsbG9jKSBhbmQgc2V0cyB0aGUgdmFsdWUgb2YgdmFyIHRvIDAuJm5ic3A7PFwvcD5cclxuXHJcbjxwPklmIHRoZSB2YWx1ZSBvZiB2YXJpYWJsZSB2YXIgaXMgYWxyZWFkeSAwLCBub3RoaW5nIGhhcHBlbnMuJm5ic3A7PFwvcD5cclxuXHJcbjxwPjMuKSBwcmludCh2YXIpOyZuYnNwOzxcL3A+XHJcblxyXG48cD5UaGlzIGZ1bmN0aW9uIHByaW50cyB0aGUgdmFsdWUgb2YgdmFyaWFibGUgdmFyLiZuYnNwOzxcL3A+XHJcblxyXG48cD5FdmVyeSBjb21tYW5kIGxpbmUgZW5kcyB3aXRoIGEgc2VtaWNvbG9uICgmIzM5OzsmIzM5OykuJm5ic3A7PFwvcD5cclxuXHJcbjxwPlZhcmlhYmxlcyBhcmUgc3RyaW5ncyBvZiBleGFjdGx5IGZvdXIgc21hbGwgbGV0dGVycyBvZiB0aGUgZW5nbGlzaCBhbHBoYWJldCAoJiMzOTthJiMzOTsuLi4mIzM5O3omIzM5OykuJm5ic3A7PFwvcD5cclxuXHJcbjxwPk51bWJlciBvZiBkaWZmZXJlbnQgdmFyaWFibGVzIHdpbGwgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIDEwMDAuJm5ic3A7PFwvcD5cclxuXHJcbjxwPkFsbCB2YXJpYWJsZXMgYXJlIHNldCB0byAwIGluIHRoZSBiZWdpbm5pbmcuJm5ic3A7PFwvcD5cclxuIiwiaW5wdXQiOiI8cD5JbiB0aGUgZmlyc3QgbGluZSB0aGVyZSBpcyBhbiBpbnRlZ2VyIE4sIDEgJmxlOyBOICZsZTsgMTAwLDAwMCwgbnVtYmVyIG9mIGNvbW1hbmRzIChhdCBsZWFzdCBvbmUgb2YgdGhlIGNvbW1hbmRzIHdpbGwgYmUgJiMzOTtwcmludCYjMzk7KS4mbmJzcDs8XC9wPlxyXG5cclxuPHA+SW4gZWFjaCBvZiB0aGUgZm9sbG93aW5nIE4gbGluZXMgdGhlcmUgaXMgb25lIGNvbW1hbmQsIGluIG9yZGVyIG9mIHRoZWlyIGV4ZWN1dGlvbi4mbmJzcDs8XC9wPlxyXG4iLCJvdXRwdXQiOiI8cD5Xcml0ZSB0aGUgcmVzdWx0cyBvZiBhbGwgJiMzOTtwcmludCYjMzk7IGNvbW1hbmRzLCBpbiBvcmRlciBvZiB0aGVpciBleGVjdXRpb24sIGVhY2ggb25lIGluIHNlcGFyYXRlIGxpbmUuJm5ic3A7PFwvcD5cclxuXHJcbjxwPiZuYnNwOzxcL3A+XHJcbiIsImhpbnQiOiIiLCJvcmlnaW5hbCI6IjEiLCJodG1sX3RpdGxlIjoiMCIsInByb2JsZW1fbGFuZ190Y29kZSI6IkVuZ2xpc2gifV0=

출처

Olympiad > Croatian Highschool Competitions in Informatics > 2004 > National Competition #2 - Juniors 2번

  • 문제의 오타를 찾은 사람: adh0463
  • 문제를 번역한 사람: baekjoon