그랜드 팜오프

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

요약
3N마리 소의 무게와 효용을 생성한 뒤, 총 효용이 최대가 되도록 N마리를 고르고 그중 총 무게가 최소인 값을 M으로 나눈 나머지를 출력한다.
난이도

보통10점 중 7점

유형
그리디, 정렬, 수학, 구현
정답자
아직 제출이 없습니다

문제

농부 존은 소 3N3N마리 (1≤N≤500,0001 \le N \le 500{,}000)를 기르고 있으며, 각 소에는 00번부터 3N−13N-1번까지 번호가 붙어 있습니다. 소 ii는 정수 무게 WiW_i와 정수 유용도(utility) UiU_i를 가지며, 두 값 모두 아래 공식으로 생성됩니다.

농부 존은 자신의 소들을 지역 농업 공동체에 선보이는 농장 경연 대회 "그랜드 팜오프"에 참가합니다. 이 대회에는 정확히 소 NN마리를 데려갈 수 있으며, 존은 데려가는 NN마리의 유용도 합이 최대가 되도록 하고 싶어 합니다.

유용도 합을 최대로 만드는 NN마리 조합은 여러 가지일 수 있습니다. 대회가 참가 소들의 총 무게에 제한을 둘 수도 있으므로, 존은 부차적인 기준으로 총 무게가 더 가벼운 조합을 선호합니다.

유용도 합이 최대인 NN마리 조합들 가운데 총 무게가 최소인 것을 찾아, 그 최소 총 무게를 MM (10,000,000≤M≤1,000,000,00010{,}000{,}000 \le M \le 1{,}000{,}000{,}000)으로 나눈 나머지를 출력하세요.

각 소 ii (0≤i<3N0 \le i < 3N)의 값은 다음과 같이 계산됩니다.

Wi=(a⋅i5+b⋅i2+c) mod dW_i = (a \cdot i^5 + b \cdot i^2 + c) \bmod d

Ui=(e⋅i5+f⋅i3+g) mod hU_i = (e \cdot i^5 + f \cdot i^3 + g) \bmod h

계수의 범위는 다음과 같습니다.

  • 0≤a,b,c,e,f,g≤1,000,000,0000 \le a, b, c, e, f, g \le 1{,}000{,}000{,}000
  • 10,000,000≤d,h≤1,000,000,00010{,}000{,}000 \le d, h \le 1{,}000{,}000{,}000

이 공식은 때때로 같은 값을 여러 번 만들어 낼 수 있으므로, 알고리즘은 중복을 올바르게 처리해야 합니다.

입력

  • 첫째 줄: 공백으로 구분된 정수 10개 — NN, aa, bb, cc, dd, ee, ff, gg, hh, MM

출력

  • 유용도 합을 최대로 하는 NN마리 선택 모두 가운데 총 무게의 최솟값을 MM으로 나눈 나머지를 한 줄에 출력합니다.

힌트

이 공식은 무게 5,6,9,14,21,305, 6, 9, 14, 21, 30과 유용도 0,1,8,27,64,1250, 1, 8, 27, 64, 125를 생성합니다. 유용도가 가장 높은 두 소는 i=4i=4번과 i=5i=5번이며, 이들의 무게 합은 21+30=5121 + 30 = 51입니다.

예제1

  1. 예제 1

    입력
    2 0 1 5 55555555 0 1 0 55555555 55555555
    
    예상 출력
    51