만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

가장 긴 인생

시간 제한2초메모리 제한512 MB

요약
각 알약은 출시 이후 노화 속도를 y/x로 낮추고, 알약을 바꿀 때마다 c초가 듭니다. 알약을 바꾸는 시점을 정해 가능한 최대 수명을 구하는 문제입니다.
난이도

보통10점 중 7점

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

문제

누구나 가능한 한 오래 살고 싶어 한다. 시간이 흐르면 기술도 발전한다. 여러 시점에 사람의 노화를 평소보다 느리게 하는 항노화 알약이 시장에 나온다. 특히 xx-yy 알약은 규칙적으로 복용하면 xx초 동안 몸을 yy초만큼만 늙게 한다. 예를 들어 100-87 알약을 규칙적으로 먹으면 그 다음 100초 동안 몸은 87초만큼만 늙는다. 알약은 한 번에 하나만 먹을 수 있고, 아예 먹지 않을 수도 있다. 이 알약을 쓸 때의 유일한 단점은 복용법이 바뀌기 때문에 알약을 다른 것으로 바꾸면 자동으로 cc초만큼 늙는다는 점이다. cc의 값은 모든 알약에 같다. 알약을 전혀 먹지 않던 상태에서 알약을 먹기 시작할 때도 cc초만큼 늙는다.

xx-yy 알약으로 바꿀 때는 그 알약을 원하는 시간만큼 먹을 수 있다. 다만 알약으로 바꿀 수 있는 시점은 그 알약이 시장에 처음 나온 시각 이후다. 인생은 t=0t = 0초에 시작하며, 알약을 쓰지 않으면 nn초까지 살 수 있다.

각 알약이 시장에 나오는 시각 tit_i(초)와 xix_i, yiy_i 값, 그리고 cc가 주어진다. 가능한 모든 알약 복용 일정 중에서 가장 오래 살 수 있는 시간을 구하라.

입력

첫 줄에 세 양의 정수 nn(n≤3⋅109n \le 3 \cdot 10^9), pp(p≤105p \le 10^5), cc(c≤105c \le 10^5)가 주어진다. nn은 알약을 먹지 않았을 때 살 수 있는 초 수, pp는 시장에 나오는 알약의 수, cc는 다른 알약으로 바꿀 때 자동으로 늙는 초 수다. 이어지는 pp개의 줄에는 각각 공백으로 구분된 정수 tit_i, xix_i, yiy_i가 주어진다(1≤ti≤10121 \le t_i \le 10^{12}, 1≤yi<xi≤1041 \le y_i < x_i \le 10^4). ii번째 알약이 나오는 시각과 xx, yy 값이다. 모든 1≤i≤n−11 \le i \le n-1에 대해 ti+1−ti>ct_{i+1} - t_i > c가 보장된다.

출력

알약을 적절히 복용했을 때 살 수 있는 최대 초 수를 실수 하나로 출력하라. 답은 상대 오차 또는 절대 오차 10−610^{-6} 이내로 정확해야 한다.

예제2

  1. 예제 1

    입력
    100 3 10
    15 99 98
    40 3 2
    90 10 9
    
    예상 출력
    115.000000000
    
  2. 예제 2

    입력
    10000 4 100
    1000 1001 1000
    1994 10 9
    2994 100 89
    3300 1000 1
    
    예상 출력
    6633900.000000000