현금 교환

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

요약
두 바우처의 미래 일별 가격과 고정된 A 대 B 매수 비율이 주어질 때, S달러로 N일 동안 사고팔아 얻을 수 있는 최대 현금을 구한다.
난이도

보통10점 중 7점

유형
동적 계획법, 수학, 그리디, 구현
정답자
아직 제출이 없습니다

문제

어린 Y는 최근 환전소에서 일하고 있다. 환전소에서는 기념 상품권 A(이하 상품권 A)와 기념 상품권 B(이하 상품권 B) 두 종류의 상품권만 교환할 수 있다. 상품권을 보유한 모든 고객은 각자의 계좌를 가지고 있다. 고객이 보유한 상품권의 수량은 실수일 수 있다.

시장의 물결에 따라 매일 오르내리는 두 종류의 상품권은 각각 특정 시점에 고유한 가치를 지니며, 상품권 한 단위는 그날 일정 금액의 현금으로 교환할 수 있다. K일째에 상품권 A와 상품권 B의 가치는 각각 AK와 BK(달러/단위 상품권)이다.

고객의 편의를 위해 환전소에서는 매우 간편한 거래 시스템인 비율 교환 방식을 제공한다. 비율 교환 방식에는 두 가지 측면이 있다.

  1. 상품권 판매: 고객은 [0, 100] 범위의 실수 OP를 판매 비율로 제시한다. 이는 상품권 A의 OP%와 상품권 B의 OP%를 그 시점의 환율로 현금으로 교환한다는 의미이다.
  2. 상품권 구매: 고객은 IP달러를 지불하고, 환전소는 이 돈을 받아 상품권으로 교환해 준다. 또한 K일째 상품권 A와 상품권 B의 수량 비율은 정확히 RateK이다.

예를 들어, 다음 3일 동안 AK, BK, RateK의 값이 다음과 같이 변한다고 하자.

시점AKBKRateK
1일차111
2일차122
3일차223

어느 날 고객이 100달러를 가지고 있고 상품권은 하나도 없다고 하자. 고객은 다음과 같은 거래를 수행한다.

시점거래현금(달러)상품권 A상품권 B
초기없음10000
1일차구매 – 100달러05050
2일차판매 – 50%752525
2일차구매 – 60달러155540
3일차판매 – 100%20500

하루에 여러 번 거래할 수 있다는 점에 유의하자.

어린 Y는 경제 관념이 매우 강한 직원이다. 비교적 오랜 기간 운영과 시장 추정을 거친 후, 그는 미래 N일 동안 상품권 A와 B의 가치 및 비율을 이미 알고 있다. 그는 S달러로 시작하여 N일 후에 얻을 수 있는 최대 현금(달러)이 얼마인지 계산하려고 한다.

입력

첫 번째 줄에는 두 양의 정수 N과 S가 주어지며, 각각 어린 Y가 예측할 수 있는 일수와 시작 현금 금액을 나타낸다.

다음 N개의 줄에서 K번째 줄에는 세 개의 실수 AK, BK, RateK가 주어진다.

출력

N일째의 모든 작업이 끝난 후 얻을 수 있는 최대 현금(달러)을 나타내는 실수 MaxProfit을 소수점 셋째 자리까지 정확하게 출력한다. 정답과의 절대 오차가 0.001 이하이면 정답으로 인정된다.

제한

  • N ≤ 100 000
  • 0 < AK ≤ 10
  • 0 < BK ≤ 10
  • 0 < RateK ≤ 100
  • MaxProfit ≤ 109

예제1

  1. 예제 1

    입력
    3 100
    1 1 1
    1 2 2
    2 2 3
    
    예상 출력
    225.000