만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

거짓말

면접 대비

시간 제한2초메모리 제한1024 MB

요약
각 사람이 적어도 k명 또는 많아야 k명이 거짓말을 하고 있다고 말할 때, 진술이 모두 맞을 수 있는 거짓말쟁이 수를 모두 구합니다.
난이도

보통10점 중 5점

유형
배열, 누적 합
정답자
아직 제출이 없습니다

문제

NN명의 사람이 있다. 각 사람은 자신을 포함하여 몇 명 이상이 거짓말을 하고 있다고 말하거나, 몇 명 이하가 거짓말을 하고 있다고 말한다.

입력

첫째 줄에 사람의 수 NN이 주어진다.

둘째 줄에 NN개의 정수 k1,⋯ ,kNk_1, \cdots, k_N이 공백으로 구분되어 주어진다.

  • kik_i가 양의 정수이면 ii번째 사람은 "kik_i명 이상이 거짓말을 하고 있다"고 말한 것이다.
  • kik_i가 0이거나 음의 정수이면 ii번째 사람은 "−ki-k_i명 이하가 거짓말을 하고 있다"고 말한 것이다.

출력

첫째 줄에 거짓말을 하는 사람의 수로 가능한 값의 개수를 출력한다.

둘째 줄에 가능한 값을 오름차순으로 공백으로 구분하여 출력한다.

제한

  • 1≤N≤500 0001 \leq N \leq 500\,000
  • −N≤ki≤N-N \leq k_i \leq N (1≤i≤N1 \leq i \leq N)

예제2

  1. 예제 1

    입력
    4
    1 -1 -1 2
    
    예상 출력
    2
    1 2
    
  2. 예제 2

    입력
    1
    0
    
    예상 출력
    2
    0 1