Rikka와 창고
시간 제한2초메모리 제한512 MB
2^n-1개 노드로 이루어진 완전 이진 트리에서 뒤쪽 절반 노드의 값이 주어지고 갱신될 때, 자유 노드 값을 정해 각 간선의 값 차이 제곱합을 최소로 만들고 그 값을 998244353으로 나눈 나머지를 매번 구한다.
문제
Algorithm Association이 여는 행사에서는 참가자들에게 레몬 티가 거의 무한히 제공된다. 이렇게 많은 레몬 티를 보관하기 위해 Rikka는 창고를 몇 개 지으려 한다.
Rikka는 개의 창고와 개의 양방향 도로를 지을 계획이다. 번째 도로는 번째 창고와 번째 창고를 연결한다.
이 창고들은 울퉁불퉁한 땅 위에 지어진다. 각 에 대해 번째 창고의 고도는 로 주어진다. 나머지 창고의 고도는 Rikka가 임의로 정할 수 있다. 고도는 임의의 실수가 될 수 있다.
가파른 언덕에서 레몬 티를 나르기는 힘들다. Rikka는 도로 체계를 최대한 편하게 만들고 싶어 한다. 따라서 각 도로 양 끝 창고의 고도 차이의 제곱합을 최소화하려 한다. 즉,
지각 운동 때문에 마지막 개 창고의 고도는 자주 바뀐다. 다행히 Rikka는 처음 개 창고의 고도를 언제든지 자유롭게 바꿀 수 있다.
각 변화 이후의 최적 계획을 구하는 것이 Rikka의 과제이다.
입력
첫째 줄에 두 정수 이 주어진다.
둘째 줄에 개의 정수 가 주어지며, 이는 을 순서대로 나타낸다. 여기서 이다.
이어서 개의 줄이 주어지고, 각 줄에는 두 정수 가 주어진다. 이는 번째 변화에서 번째 창고의 고도를 로 바꾼다는 뜻이다.
출력
총 개의 줄을 출력한다. 각 줄에는 하나의 수를 출력하며, 첫 줄에는 초기 값을, 그 다음 개의 줄에는 각 변화 이후의 값을 출력한다.
특별 심사 코드를 작성하는 것은 번거로운 일이다. 따라서 답을 으로 나눈 나머지를 출력해야 한다. 구체적으로, 를 기약분수로 나타냈을 때 라 하면 을 출력한다.
힌트
첫 번째 예시에서 한 최적해는 이고, 의 값은 이다.