대결

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

요약
선수들을 연속한 라운드로 나누고 라운드마다 순서대로 가중치를 곱해 1번 팀에서 0번 팀을 뺀 점수를 최대화하며, 그때 라운드 수를 최소로 한다.
난이도

보통10점 중 7점

유형
동적 계획법, 누적 합, 그리디
정답자
아직 제출이 없습니다

문제

NN명의 선수가 0번 팀과 1번 팀으로 나누어 대결을 한다. i(1≤i≤N)i(1\le i\le N)번 선수는 A_iA\_i번 팀에 속해있으며, 능력치는 B_iB\_i이다. (단, A_iA\_i는 0 또는 1)

대결의 진행자인 당신은 대결을 여러 라운드에 걸쳐 진행하려고 한다. 당신은 11개 이상 NN개 이하의 라운드를 자유롭게 만든 뒤, 아래 규칙에 따라 라운드에 참가할 선수를 선택해야 한다.

  • 각 라운드에는 연속된 번호의 선수들만 참가할 수 있다.
  • 모든 선수는 정확히 하나의 라운드에 참가해야 한다.
  • 모든 라운드는 한 명 이상의 선수가 참가해야 한다.

예를 들어, (1,2),(3),(4,5)(1,2) ,(3) ,(4,5)와 같이 라운드를 구성할 수 있지만, (1,3),(2,4,5)(1,3) ,(2,4,5)와 같이 불연속적인 번호의 선수들로 라운드를 구성하거나, (1,2,3),(3,4)(1,2,3) ,(3,4)와 같이 한 선수가 0개 또는 2개 이상의 라운드에 참가하도록 라운드를 구성할 수 없다.

대결에서 각 팀의 점수는 다음과 같이 계산한다.

  • 참가하는 선수의 번호가 작은 라운드부터 차례대로 1,2,⋯1,2,\cdots번째 라운드라고 하자.
  • jj번째 라운드의 점수는 해당 라운드에 참가한 팀 소속 선수들의 능력치의 합에 jj를 곱한 값이다.
  • 팀의 최종 점수는 해당 팀이 모든 라운드에서 얻은 점수의 총합이다.

예를 들어, A=\[1,1,0,0,1]A=\[1,1,0,0,1], B=\[1,2,3,4,5]B=\[1,2,3,4,5]이고, 라운드를 (1,2),(3),(4,5)(1,2) ,(3) ,(4,5)로 구성했다고 하자. 0번 팀은 2 라운드에서 3×2=63\times 2=6점, 3 라운드에서 4×3=124\times 3=12점을 획득해서 최종 점수는 18점이고, 1번 팀은 1 라운드에서 (1+2)×1=3(1+2)\times 1=3, 3 라운드에서 5×3=155\times 3=15점을 획득해 최종 점수는 18점이다.

1번 팀의 열렬한 팬인 당신은 1번 팀의 최종 점수에서 0번 팀의 최종 점수를 뺀 값 SS를 최대화하려고 한다. 만약 SS를 최대화하는 라운드 구성 방법이 여러가지라면, 라운드 개수 MM이 최소가 되도록 라운드를 구성해야 한다.

만들 수 있는 최대 점수 차이 SS와, 이를 달성하기 위한 가장 적은 라운드의 개수 MM을 구하는 프로그램을 작성해 보자.

입력

첫째 줄에 선수의 수를 의미하는 정수 NN이 주어진다.

둘째 줄에 각 선수의 소속 팀을 나타내는 NN개의 정수 A_1,A_2,⋯ ,A_NA\_1,A\_2,\cdots ,A\_N 이 공백으로 구분되어 주어진다.

셋째 줄에 각 선수의 능력치를 나타내는 NN개의 정수 B_1,B_2,⋯ ,B_NB\_1,B\_2,\cdots ,B\_N 이 공백으로 구분되어 주어진다.

출력

1번 팀의 최종 점수에서 0번 팀의 최종 점수를 뺀 값이 최대가 되도록 하는 최소 라운드 개수 MM과 그때의 최대 점수 차 SS를 공백으로 구분해서 출력한다.

제한

  • 1≤N≤1,000,0001\le N\le 1\\, 000\\, 000
  • 0≤A_i≤10\le A\_i\le 1 (1≤i≤N1\le i\le N)
  • 0≤B_i≤1,000,0000\le B\_i\le 1\\, 000\\, 000 (1≤i≤N1\le i\le N)
  • 입력으로 주어지는 수는 모두 정수이다.

힌트

정답이 32비트 정수 범위를 넘을 수 있으므로, C/C++에서는 long long, Java에서는 long과 같은 자료형을 사용하는 것을 권장한다.

예제2

  1. 예제 1

    입력
    5
    0 0 0 0 0
    1 2 3 4 5
    
    예상 출력
    1 -15
    
  2. 예제 2

    입력
    5
    1 1 0 0 1
    1 2 3 4 5
    
    예상 출력
    3 7