1차원 2048과 쿼리
시간 제한1초메모리 제한1024 MB
2의 거듭제곱으로 이루어진 수열에 원소를 넣고 빼는 쿼리가 주어질 때, 같은 값을 가진 두 원소를 합쳐 두 배로 만드는 연산을 반복해 얻을 수 있는 최댓값을 각 쿼리마다 구한다.
문제
() 꼴의 정수 또는 으로만 이루어진 수열이 있습니다. 흐즈로는 이 수열에 대해 다음과 같은 연산을 정의했습니다.
- 인 서로 다른 , 를 골라서 를 각각 으로 변경합니다. (이때, 수열의 첫 번째 원소는 입니다.)
예를 들어, 수열 에 을 골라 실행한다면 수열은 이 되며, 여기에 를 골라 실행한다면 수열은 이 됩니다.
흐즈로는 수열에 연산을 여러 번 실행하여 수열의 최댓값이 가능한 한 커지길 원하지만, 수열 전체에 이 연산을 계속 반복했다가는 머리가 아파질 것이라고 생각하였습니다.
그러던 중 흐즈로는 더욱 골치 아픈 문제점을 생각하였습니다. 수열이 바뀌면 연산을 처음부터 다시 시작해야 한다는 것입니다!
여러분이 해결해야 할 문제는 다음과 같습니다. 우선 초기의 수열 는 빈 수열 으로 정의합니다. 그 후 다음과 같은 종류의 쿼리가 총 개 주어집니다.
- : 의 끝에 를 추가합니다. 그 뒤 수열에 흐즈로가 정의한 연산을 번 이상 수행해 만들 수 있는 가장 큰 최댓값을 출력합니다. 는 이상의 의 거듭제곱 또는 임이 보장됩니다.
- : 에 마지막으로 등장하는 를 제거합니다. 그 뒤 수열에 흐즈로가 정의한 연산을 번 이상 수행해 만들 수 있는 가장 큰 최댓값을 출력합니다. 는 이상의 의 거듭제곱 또는 임이 보장되며, 에는 가 적어도 하나 이상 존재함이 보장됩니다.
흐즈로는 이미 머리가 너무 아파서 문제에 대해 생각할 정신조차 없습니다. 흐즈로를 도와 문제를 해결해 주세요!
입력
첫 번째 줄에 쿼리의 개수 ()가 주어집니다.
두 번째 줄부터 번째 줄까지 쿼리가 주어집니다. 각 쿼리는 또는 (는 또는 ) 중 하나이며, 의 경우 수열 에 가 적어도 하나 이상 존재함이 보장됩니다.
입력의 양이 많기 때문에 언어에 따른 빠른 입출력 방법을 사용할 것을 권장합니다. 빠른 입출력 방법은 15552: 빠른 A+B를 참고하세요.
출력
개의 쿼리에 대해 각각 한 줄에 문제의 정답을 출력하세요. 가 빈 수열인 경우 문제의 정답은 으로 간주합니다. 모든 쿼리에 대해 문제의 정답이 보다 크지 않음이 보장됩니다.