문제 준비
면접 대비시간 제한2초메모리 제한256 MB
배열의 원소를 하나씩 늘리거나 줄이는 갱신이 주어질 때, 주어진 k에 대해 ceil(t_i / k)의 합을 구한다.
문제
앤드루는 대회에 낼 프로그래밍 문제 개를 만들었고, 이제 문제를 다듬으려고 한다. 번 문제를 준비하는 데 필요한 총 시간은 분이라고 추정했다. 앤드루는 친구들을 불러 이 일을 나눠 맡길 생각이다.
몇 명이 도와줄지는 아직 모르지만 일은 공평하게 나누고 싶다. 그래서 번 문제마다 정수 를 정하고, 도와주는 친구는 모두 그 문제에 분씩 쓴다. 친구들이 번 문제에 쓴 시간의 합이 분 이상이면 그 문제는 완전히 준비된 것이다. 친구가 명일 때 는 를 만족하는 가장 작은 정수로 정한다.
앤드루는 문제의 난이도를 잘못 봤다는 것을 알아차리면 를 1 늘리거나 1 줄인다.
처음 추정한 가 주어진다. 쿼리 개를 주어진 순서대로 처리하라. 각 쿼리는 다음 중 하나다.
1 i: 앤드루가 를 1 늘린다.2 i: 앤드루가 를 1 줄인다.3 k: 친구 명이 도와준다면 친구 한 명이 문제 개를 준비하는 데 몇 분을 쓰는지 앤드루가 알고 싶어 한다.
입력
첫째 줄에 문제의 개수 과 쿼리의 개수 이 주어진다. ()
둘째 줄에 정수 이 주어진다. 는 앤드루가 번 문제에 대해 처음 추정한 시간이다. ()
다음 개 줄에 쿼리가 한 줄에 하나씩, 두 정수 와 로 주어진다. 가 1이면 를 1 늘리고, 2이면 를 1 줄인다. 두 경우 모두 이다. 가 3이면 친구 명이 도와줄 때 친구 한 명이 쓰는 시간을 구해야 한다. 이 경우 이다.
어떤 쿼리를 처리한 뒤에도 모든 는 1 이상 이하다.
출력
가 3인 쿼리마다 친구 한 명이 문제 개를 준비하는 데 쓰는 시간의 합 을 한 줄에 하나씩 출력한다.