문제
국을에 취직한 재연이는 시험 삼아 다음과 같은 프로그램을 만들었다. 이 프로그램에는 오직 x라는 변수밖에 없고, 초기에 x = 0이다. 프로그램은 n개의 명령이 입력되며, 명령의 종류는 총 두 가지가 있다.
- add y(y는 정수이다) - x에 y를 더한다.
- set y(y는 정수이다) - x를 y값으로 바꾼다.
예를 들어 다음과 같다.
x=0 //초기에 x는 0이다.
add 5
x=5
add -3
x=2
set 1
x=1
add -2
x=-1
add 5
x=4
국을은 신입사원 재연이의 프로그래머로써의 자질을 시험하기 위해, 위 프로그램을 업데이트하라고 했다. 그의 과제는 위의 명령 중 몇 줄을 지워서(또는 한 줄도 지우지 않고) 마지막 x값의 결과가 최댓값이 되게 하는 것이다. 그러나 재연이는 한컴에서 공부하던 시절 성실하지 않았기 때문에, 그 과제가 너무 어려워서 당신이 도와주어야 한다. 국을의 과제에 따라 업데이트된 프로그램으로 출력되는 x의 최댓값을 구하여라.
입력
첫 줄에 n이 주어진다. n은 명령의 수이다.
다음 n줄에 명령어 s(add 또는 set의 문자열이다)와 정수 y가 주어진다.
입력 제약 1<=n<=200,000 -1,000,000,000<=y<=1,000,000,000
출력
첫 줄에 x값의 최댓값을 출력한다.
주의사항 답은 4 byte int 범위(-231 ~ 231-1)를 넘을 수도 있다.
예제 #1
3
add 2
set 1
add -1
2
예제 #2
2
set 5
add 6
11
출처
Hackerrank - Week of Code 37 #2, 2018camp contest2 problemC