题库练习 Flow Control
← 上一题 下一题 →

A15825 | Flow Control

时间限制1s
内存限制256MB
通过 / 提交0/0

题目描述

Raj has a single physical network line that connects his office to the Internet. This line bandwidth is $b$ bytes per millisecond.

There are $n$ users who would like to use this network line to transmit some data. The $i$ -th of them will use the line from millisecond $s_i$ to millisecond $f_i$ inclusive. His initial data rate will be set to $d_i$ . That means he will use data rate equal to $d_i$ for millisecond $s_i$ , and then it will change according to the procedure described below.

The flow control will happen as follows. Suppose there are $m$ users trying to transmit some data via the given network line during millisecond $x$ . Denote as $t_i$ the data rate that the $i$ -th of these $m$ users has at the beginning of this millisecond. All $t_i$ are non-negative integer values.

1. If $m = 0$ , i. e. there are no users trying to transmit data during this millisecond, nothing happens.
2. If the sum of all $t_i$ is less than or equal to $b$ , each active user successfully completes his transmission (the $i$ -th active user transmits $t_i$ bytes). After that, the data rate of each active user grows by $1$ , i. e. each $t_i$ is increased by $1$ .
3. If the sum of all $t_i$ is greater than $b$ , the congestion occurs and no data transmissions succeed this millisecond at all. If that happens, each $t_i$ decreases twice, i. e. each $t_i$ is replaced with $\lfloor \frac{t_i}{2} \rfloor$ .

Raj knows all the values $n$ , $b$ , $s_i$ , $f_i$ , and $d_i$ , he wants to calculate the total number of bytes transmitted by all the users in the aggregate.

输入格式

The first line of the input contains two integers $n$ and $b$ ( $1 \leq n \leq 2 \cdot 10^5$ , $1 \leq b \leq 10^9$ ), the number of users who will use the line and the line bandwidth, respectively.

Each of the following $n$ lines contains three integers $s_i$ , $f_i$ and $d_i$ ( $1 \leq s_i \leq f_i \leq 10^9$ , $1 \leq d_i \leq 10^9$ ), denoting that the $i$ -th user will try to transmit data during each millisecond between $s_i$ and $f_i$ inclusive, and the initial data rate of the $i$ -th user.

输出格式

Print one integer — the total number of bytes all users will successfully transmit.

输入输出样例

输入 #1
1 3
1 5 2
输出 #1
10
输入 #2
1 10
7 11 1000
输出 #2
0
输入 #3
2 6
1 12 1
8 20 3
输出 #3
64
输入 #4
3 10
1 100 1
30 60 20
40 80 6
输出 #4
534
C++ 编辑器
输入
输出