시장조성하기

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

요약
N번의 매매에서 각 시점마다 [a_i, b_i] 범위의 정수를 선택해 누적 보유량이 0이 될 때마다 받는 보상의 합을 최대로 만든다.
난이도

어려움10점 중 8점

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

문제

Hudson River Trading(HRT)은 뛰어난 수학, 기술적 역량을 활용하여 거래 전략을 설계하는 퀀트 트레이딩 회사이다. HRT는 엔지니어와 연구자들이 한 팀을 이뤄 어려운 문제를 해결하며, 글로벌 금융 시장에서 매일 수백만 주의 주식을 거래한다.

HRT의 신입 알고리즘 개발자는 새로 설계한 거래 전략을 따르는 시장조성(market-making) 엔진을 개발한 뒤, 그 엔진의 안정성을 평가하고자 한다. 시장조성 엔진은 주식을 보유하지 않은 가상의 계좌를 이용하여 거래를 시작하며, NN개의 연속된 매매 시점(틱)에 아래와 같은 전략을 따라 거래한다.

  • ii번째 매매 시점에 엔진은 a_ia\_i 이상 b_ib\_i 이하의 정수 하나를 선택한다. 선택한 정수가 양수라면 그만큼 주식을 매수하고, 음수라면 선택한 정수의 절댓값만큼 주식을 매도하고, 00이라면 주식을 매매하지 않는다. 이 때 보유한 주식이 부족해도 매도가 가능하며, 이 경우 보유 주식의 수는 음수가 된다.
  • ii번째 매매 직후 보유 주식이 00주라면, 해당 전략이 포지션 노출을 최소화하여 위험성을 완화하고 시장 안정성에 기여했다고 평가하여 시장조성 엔진의 안정성이 x_ix\_i만큼 증가한다.
  • 수수료 또는 슬리피지 등 다른 요소는 모두 무시한다.

총 NN번의 매매를 모두 마쳤을 때, 신규 개발한 시장조성 엔진이 달성할 수 있는 안정성의 최댓값을 구해보자.

입력

첫째 줄에는 주식을 매매한 횟수 NN이 주어진다. (1≤N≤1,000,0001 \leq N \leq 1\\,000\\,000)

다음 NN개의 줄에 걸쳐, 그 중 ii번째 줄에 ii번째 매매에 대한 정보를 의미하는 세 정수 a_i,b_i,x_ia\_i, b\_i, x\_i가 공백으로 구분되어 주어진다. (−109≤a_i≤b_i≤109-10^9 \leq a\_i \leq b\_i \leq 10^9; 1≤x_i≤1091 \leq x\_i \leq 10^9)

출력

총 NN번의 매매를 모두 마쳤을 때, 신규 개발한 시장조성 엔진이 달성할 수 있는 안정성의 최댓값을 출력한다.

예제3

  1. 예제 1

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

    입력
    5
    1 1 1000
    -2 -1 7
    1 1 5
    -1 -1 4
    1 1 8
    
    예상 출력
    13
    
  3. 예제 3

    입력
    8
    -1 1 5
    -4 2 7
    3 4 4
    -6 4 8
    -2 -1 6
    -5 7 1
    4 6 9
    -7 7 5
    
    예상 출력
    34