아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

일몰 감상 2

시간 제한1초메모리 제한128 MB

요약
n 곱하기 n 격자의 각 점에서 맨해튼 거리 k 이내 건물 높이의 최댓값을 구해 모두 더한다.
난이도

보통10점 중 7점

유형
배열, 누적 합, 슬라이딩 윈도우, 행렬
정답자
아직 제출이 없습니다

문제

바이트 시(市)의 주민들은 자기 집 옥상에서 일몰 보기를 좋아한다. 일몰이 유난히 아름다운 날이면, 더 나은 전망을 얻을 수 있는 근처 건물의 옥상까지 찾아가는 사람도 있다.

도시는 한 변의 길이가 nn인 정사각형 격자로 이루어져 있고, 건물은 각 격자점마다 하나씩 서 있다. 두 격자점 사이의 거리는 도시 거리(맨해튼 거리)로 잰다. 두 점 (ax,ay)(a_x, a_y)와 (bx,by)(b_x, b_y) 사이의 도시 거리는 다음과 같다.

p((ax,ay),(bx,by))=∣ax−bx∣+∣ay−by∣p((a_x, a_y), (b_x, b_y)) = |a_x - b_x| + |a_y - b_y|

준은 새 집을 사려고 한다. 그는 일몰을 아주 좋아해서, 자기 집에서 도시 거리로 kk 이하만큼 떨어진 건물이라면 기꺼이 찾아간다.

각 격자점마다 그곳에 살 때 준이 도달할 수 있는 가장 높은 건물의 높이를 구하려고 한다. 즉, 모든 격자점에 대해 그 지점에서 도시 거리로 kk 이하만큼 떨어진 건물들 중 가장 높은 높이를 구한 뒤, 그 값들을 전부 더한 합을 출력한다.

입력

첫째 줄에 세 자연수 nn, kk, seedseed가 공백 하나로 구분되어 주어진다 (1≤n≤30001 \le n \le 3000, 1≤k≤10001 \le k \le 1000, 1≤seed≤10001 \le seed \le 1000). seedseed는 도시의 건물 높이를 생성하는 데 쓰인다. 행과 열은 00번부터 번호를 매기며, ii행 jj열(0≤i<n0 \le i < n, 0≤j<n0 \le j < n)에 서 있는 건물의 높이는 다음과 같다.

h(i,j)=(3i+5j⋅seed) mod 228h(i, j) = (3^{i} + 5^{j} \cdot seed) \bmod 228

출력

각 격자점에 대해 도시 거리로 kk 이하만큼 떨어진 건물들 중 가장 높은 높이를 구하고, 이 최댓값들을 모든 격자점에 대해 더한 값을 한 줄에 출력한다. 건물 높이는 위 식에서 228228로 나눈 나머지로 생성되지만, 최종 합에는 나머지 연산을 적용하지 않고 그대로 출력한다.

예제3

  1. 예제 1

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

    입력
    1 1 1
    
    예상 출력
    2
    
  3. 예제 3

    입력
    2 3 5
    
    예상 출력
    112