메모리 할당
면접 대비시간 제한1초메모리 제한512 MB
10만 개 메모리 셀에서 첫 번합 배분과 해제 명령을 처리하고 print 명령의 변수 값을 순서대로 출력합니다.
문제
메모리 예약과 해제 명령의 실행을 시뮬레이션하는 프로그램을 작성하시오. 컴퓨터의 메모리는 100 000개의 연속한 메모리 위치로 이루어진 배열이고, 주소 1부터 100 000까지 차례로 번호가 붙어 있다. 처음에는 모든 위치가 비어 있다. 나타날 수 있는 명령은 다음과 같다.
var=malloc(s);이 명령은s개의 연속한 빈 메모리 위치로 이루어진 첫 번째 구간을 찾아 예약한다. 함수는 예약한 첫 위치의 주소를 반환한다.s개의 연속한 빈 메모리 위치로 이루어진 구간이 없으면 아무것도 예약하지 않고 0을 반환한다.free(var);이 명령은 변수 var에 (이전의malloc함수 호출로) 할당된 메모리 위치를 해제하고 변수var의 값을 0으로 만든다. 함수를 호출하기 전에 변수var의 값이 이미 0이면 아무것도 하지 않는다.print(var);이 명령은 변수var의 값을 출력한다.
모든 명령은 “;”(세미콜론)으로 끝난다. 변수는 영문 소문자 정확히 4개로 이루어진 문자열이다. 모든 변수는 처음에 0으로 초기화된다.
입력
첫째 줄에 정수 n (1 ≤ n ≤ 100 000)이 주어진다. n은 명령의 수이다. 이어지는 n개의 줄 중 j번째 줄에는 j번째 명령이 문제 본문과 정확히 같은 형식으로, 여분의 공백 문자 없이 주어진다. 서로 다른 변수의 총 개수는 1000 이하이다. 적어도 하나의 명령은 print 명령이다. 모든 malloc 명령에서 100 ≤ s ≤ 100 000이다.
출력
j번째 줄에 j번째 print 명령의 결과를 출력한다.