시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초 1024 MB25414713159.009%

문제

아래는 Call for Tasks 당시 작성한 지문이다. 믿거나 말거나. 이 문제를 이해하고 선정한 파딱에게 박수를 보내주자. 쉬운 설명의 지문은 아래에 적어놓았다.


길이 $N$의 $1$차원 음향 복도를 정수 격자 $\Omega=\{1,2,\dots,N\}$ 로 모델링한다. 기록 시각 $T$에서 각 위치 $i\in\Omega$에서 관측된 음향 변위는 $y_i\in\mathbb Z$로 주어진다.

각 격자점에는 유한 개의 스피커를 설치할 수 있으며, 스피커 $j$는 위치 $x_j\in\Omega$, 방사 진폭 $v_j\in\mathbb Z\cap[1,2\times10^9]$, 그리고 이산 위상 $\phi_j\in \{0,1,2,3\}$를 갖는다.

스피커 $j$가 복도 위치 $i$에서 유도하는 음향 변위 $\Delta y_i^{(j)}$는 다음과 같이 정의된다. 헤비사이드 계단함수 $H:\mathbb R\to\{0,1\}$를 $H(t)= \begin{cases} 0 & t<0 \\ 1 & t\ge 0\end{cases}$ 로 정의한다.

$$\Delta y_i^{(j)} = \Biggl( \lim_{z \to 0^+} \frac{(1+z)^{v_j}-1}{z} \Biggr) \cdot \Biggl( \int_{0}^{1} H\bigl(i-x_j+1-s\bigr) ds \Biggr) \cdot \Biggl( \sum_{n=0}^{\infty} \frac{(-1)^n}{(2n+1)!} \left(\frac{\pi}{2}\right)^{2n+1} (i-x_j-\phi_j)^{2n+1} \Biggr)$$

기록 시각 $T$에서 관측된 음향 변위는 모든 스피커의 방사 효과가 선형적으로 중첩된 결과로, $ y_i=\sum_{j=1}^{M}\Delta y_i^{(j)}, \forall i\in\Omega $를 만족한다.

주어진 관측값 $y_1,y_2,\cdots,y_N$에 대해 위의 음향 변위 공식을 만족시키는 스피커 파라미터 집합을 구성하라. 단, 설치된 스피커의 총 개수 $M$이 최소가 되어야 한다.


아니 왜.


$1$차원 모양의 복도에는 $1$번부터 $N$번까지 칸이 있고, 어떤 순간에 각 칸의 수 $y_1, y_2, \cdots, y_N$를 기록했다. 이 수는 여러 개의 스피커 소리를 모두 합친 결과이다.

스피커 $1$개는 다음 규칙을 가진다.

  • 스피커는 위치 $x$, 소리 세기 $v$, 소리 밀림 $\phi$를 가진다.
  • 스피커는 현재 위치 $x$부터 오른쪽으로 한 칸씩 $[0, +v, 0, -v]$ 모양의 소리 패턴을 반복해서 각 칸에 소리의 영향을 준다.
    • $\begin{array}{|c|c|c|c|c|c|c|c|c|c|} \text{위치} & \hline x + 0& x + 1& x + 2& x + 3& x + 4& x + 5& x + 6& x + 7& x + 8& x+9&\cdots\\\hline \text{영향} & 0 & +v & 0 & -v & 0 & +v & 0 & -v & 0 & +v & \cdots \\\hline \end{array}$
  • $\phi$는 소리 패턴이 몇 칸 밀려서 시작하는지를 뜻한다.
    • $\begin{array}{|c|c|c|c|c|c|c|c|c|c|} \text{위치} & \hline x + 0& x + 1& x + 2& x + 3& x + 4& x + 5& x + 6& x + 7& x + 8& x+9&\cdots\\\hline \phi=0 & 0 & +v & 0 & -v & 0 & +v & 0 & -v & 0 & +v & \cdots \\\hline \phi=1 & -v & 0 & +v & 0 & -v & 0 & +v & 0 & -v & 0 & \cdots \\\hline\phi=2 & 0 & -v & 0 & +v & 0 & -v & 0 & +v & 0 & -v & \cdots \\\hline\phi=3 & +v & 0 & -v & 0 & +v & 0 & -v & 0 & +v & 0 & \cdots \\\hline \end{array}$

기록값 $y_i$는 설치된 모든 스피커가 $i$번째 칸에 준 영향을 전부 합친 값이다. 주어진 $y_1, y_2, \cdots, y_N$을 만들 수 있는 스피커 배치가 궁금하다. 그중에서 설치한 스피커 수가 최소가 되는 스피커 배치를 찾아보자.


아래 [지문 보기] 텍스트를 클릭하면 엄격하게 정의를 설명한 지문을 볼 수 있다. 입력, 출력, 예제 설명은 엄격하게 정의를 설명한 지문을 기준으로 작성했음을 유의하라.

  • 주요 차이점
    • 소리 세기 → 볼륨
    • 소리 밀림 → 위상
    • 스피커 $1$개의 $x$, $v$, $\phi$ → $j$번째 스피커의 $x_j$, $v_j$, $\phi_j$
[지문 보기]

길이가 $N$인 $1$차원 배열 형태의 복도가 있다. 복도에서 기록 시각 $T$에 각 위치의 음파 변위를 기록했으며, 복도의 $i$번째 위치에서의 기록값은 정수 $y_i$이다. 기록된 변위값 $y_i$는 음수가 될 수 있다. $(1\le i\le N)$

복도의 각 위치 $i$에는 스피커를 여러 대 설치할 수 있는 거치대가 마련되어 있다. 스피커 $j$는 다음 속성을 가진다. $(1\le j\le M)$

  • 설치된 복도의 위치 $x_j$ $(1\le x_j\le N$; $x_j$는 정수$)$
  • 볼륨 $v_j$ $(1\le v_j\le 2\times 10^9$; $v_j$는 정수$)$
  • 위상 $\phi_j$ $(0\le\phi_j\le 3$; $\phi_j$는 정수$)$

스피커가 복도에 영향을 주는 공식을 소개하기 앞서 필요한 식을 소개한다. 먼저, 스피커 $j$가 위치 $i$에 영향을 미치는 경우와 미치지 않는 경우를 나누는 함수 $f(i, x_j)$를 정의한다.

$$f(i, x_j)= \begin{cases} 0 & i \lt x_j \\ 1 & i \ge x_j\end{cases}$$

그리고 스피커 $j$가 각 위치에 어떻게 영향을 주는지를 담은 함수 $g(k)$를 정의한다.

$$g(k)= \begin{cases} 0 & k \equiv 0 \pmod{4} \\ +1 & k \equiv 1 \pmod{4} \\ 0 & k \equiv 2 \pmod{4} \\ -1 & k \equiv 3 \pmod{4} \end{cases}$$

스피커 $j$가 복도의 위치 $i$에 미치는 영향 $\Delta y_i^{(j)}$는 다음과 같다.

$$\Delta y_i^{(j)}=v_j\times f(i, x_j) \times g(i-x_j-\phi_j)$$

아래는 $\Delta y_i^{(j)}$ 식에 대해 부연 설명한 글이다.

  • $v_j$ 항
    • 위에서 설명한 스피커 $j$에 대한 볼륨 $v_j$이다.
  • $f(i, x_j)$ 항
    • 스피커는 항상 자기 위치를 포함하여 오른쪽으로만 영향을 준다는 의미의 항이다.
    • 따라서 스피커 $j$는 자기 위치보다 왼쪽에는 영향이 없고, 위치 $x_j$부터 오른쪽으로만 영향을 준다고 보면 된다.
  • $g(i-x_j-\phi_j)$ 항
    • 스피커 하나는 $x_j$부터 오른쪽으로 가며 $0$, $+1$, $0$, $-1$, $0$, $+1$, $0$, $-1$, $\cdots$ 같은 패턴의 파형을 만든다.
    • $\phi_j$는 위의 패턴이 몇 칸 밀려서 시작하느냐를 의미한다.
    • 예를 들어 $\phi_j=1$인 경우 한 칸이 밀려 $-1$, $0$, $+1$, $0$, $-1$, $0$, $+1$, $0$, $\cdots$ 같은 패턴의 파형을 만든다.
  • 따라서 스피커 $e$가 $x_e=3$, $v_e=5$일 때, $\phi_e$ 값에 따라 $y_1$, $y_2$, $\cdots$에 영향을 주는 과정은 다음과 같다.
    • $\begin{array}{c|rrrrrrrrrr}& y_1& y_2& y_3& y_4& y_5& y_6& y_7& y_8& y_9& y_{10}&\cdots\\\hline\phi_e=0 & 0 & 0 & 0 & 5 & 0 & -5 & 0 & 5 & 0 & -5 & \cdots\\\phi_e=1 & 0 & 0 & -5& 0 & 5 & 0 & -5& 0 & 5 & 0 & \cdots\\\phi_e=2 & 0 & 0 & 0 & -5 & 0 & 5 & 0 & -5 & 0 & 5 & \cdots\\\phi_e=3 & 0 & 0 & 5 & 0 & -5& 0 & 5 & 0 & -5& 0 & \cdots\end{array}$

기록값 $y_i$는 다음과 같이 설치된 모든 스피커의 영향을 합친 값이다.

$$y_i=\sum_{j=1}^M\Delta y_i^{(j)}$$

정리하면 각 스피커는 $x_j$부터 시작해 오른쪽으로만 전달되는 $4$칸 주기 파형을 만들고, 기록값 $y_i$는 그러한 파형 변위들의 합이다.

당신은 기록 시각 $T$에서 기록한 값 $y_1$, $y_2$, $\cdots$, $y_N$을 보고 가능한 스피커의 배치를 찾아야 한다. 만족하는 스피커 배치 중 스피커 개수가 최소가 되는 배치를 구해보자.

입력

첫째 줄에 $N$이 주어진다. $(1 \le N \le 1\,000\,000)$

둘째 줄에 $y_1$, $y_2$, $\cdots$, $y_N$이 공백으로 구분되어 주어진다. $(-10^9 \le y_i \le 10^9)$

주어진 입력에 대해 조건을 만족하는 스피커 배치가 항상 존재함이 보장된다.

출력

첫째 줄에 설치한 스피커 최소 개수 $M$을 출력한다.

다음 $M$개 줄에 걸쳐 설치한 스피커 정보를 출력한다. 그중 $j$번째 줄에는 정수 $x_j$, $v_j$, $\phi_j$를 공백으로 구분하여 출력한다. $(1 \le x_j \le N$; $1 \le v_j \le 2 \times 10^9$; $0 \le \phi_j \le 3)$

만족하는 스피커 배치가 여러 개라면 그중 아무것이나 출력한다.

예제 입력 1

5
1 3 -1 -3 1

예제 출력 1

2
1 1 3
1 3 0

$$\begin{array}{c|rrrrrr}& y_1& y_2& y_3& y_4& y_5 \\\hline \ 1 & +1 & 0 & -1 & 0 & +1\\\ 2 & 0 & +3 & 0 & -3 & 0\end{array}$$

예제 입력 2

5
0 0 0 0 0

예제 출력 2

0

예제 입력 3

5
-6 1 -2 2 -1

예제 출력 3

5
1 1 0
1 6 1
5 3 1
2 8 2
4 3 3

$$\begin{array}{c|rrrrrr}& y_1& y_2& y_3& y_4& y_5\\\hline \ 1 & 0 & +1 & 0 & -1 & 0\\\ 2 & -6 & 0 & +6 & 0 & -6\\\ 3 & 0 & 0 & 0 & 0 & -3\\\ 4 & 0 & 0 & -8 & 0 & +8\\\ 5 & 0 & 0 & 0 & +3 & 0 \end{array}$$

예시 사진은 $1$차원 배열 형태가 아니지만, 이해를 돕기 위해 $2$차원 좌표평면으로 표현하였다.

스피커 $1$은 $x_1=1$, $v_1=1$, $\phi_1=0$이므로 위치 $1$번에 설치되었고, 볼륨이 $1$이고, 위상이 $0$이므로 위 사진과 같이 복도에 영향을 준다.

스피커 $2$는 $x_2=1$, $v_2=6$, $\phi_2=1$이므로 위치 $1$번에 설치되었고, 볼륨이 $6$이고, 위상이 $1$이므로 위 사진과 같이 복도에 영향을 준다.

스피커 $3$은 $x_3=5$, $v_3=3$, $\phi_3=1$이므로 위치 $5$번에 설치되었고, 볼륨이 $3$이고, 위상이 $1$이므로 위 사진과 같이 복도에 영향을 준다.

스피커 $4$는 $x_4=2$, $v_4=8$, $\phi_4=2$이므로 위치 $2$번에 설치되었고, 볼륨이 $8$이고, 위상이 $2$이므로 위 사진과 같이 복도에 영향을 준다.

스피커 $5$는 $x_5=4$, $v_5=3$, $\phi_5=3$이므로 위치 $4$번에 설치되었고, 볼륨이 $3$이고, 위상이 $3$이므로 위 사진과 같이 복도에 영향을 준다.

예제 3번에서의 모든 스피커의 영향을 합친 결과는 위 사진과 같다.

출처

Contest > BOJ User Contest > 피갤컵 > 제3회 피갤컵 D번