CF1804G Flow Control
Description
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.
Input Format
N/A
Output Format
N/A
Explanation/Hint
Consider the first example.
- Millisecond $ 1 $ : User $ 1 $ transmits $ 2 $ bytes.
- Millisecond $ 2 $ : User $ 1 $ transmits $ 3 $ bytes.
- Millisecond $ 3 $ : Congestion occurs, and no user transmits data.
- Millisecond $ 4 $ : User $ 1 $ transmits $ 2 $ bytes.
- Millisecond $ 5 $ : User $ 1 $ transmits $ 3 $ bytes.
In the second example, at each millisecond from the $ 7 $ -th to the $ 11 $ -th inclusive, congestion occurs, and the only user decreases their rate twice. However, they don't decrease the speed enough before disconnecting.
Consider the third example.
- Millisecond $ 1 $ : User $ 1 $ transmits $ 1 $ bytes.
- Millisecond $ 2 $ : User $ 1 $ transmits $ 2 $ bytes.
- Millisecond $ 3 $ : User $ 1 $ transmits $ 3 $ bytes.
- Millisecond $ 4 $ : User $ 1 $ transmits $ 4 $ bytes.
- Millisecond $ 5 $ : User $ 1 $ transmits $ 5 $ bytes.
- Millisecond $ 6 $ : User $ 1 $ transmits $ 6 $ bytes.
- Millisecond $ 7 $ : Congestion occurs, and no user transmits data.
- Millisecond $ 8 $ : User $ 1 $ transmits $ 3 $ bytes. User $ 2 $ transmits $ 3 $ bytes.
- Millisecond $ 9 $ : Congestion occurs, and no user transmits data.
- Millisecond $ 10 $ : User $ 1 $ transmits $ 2 $ bytes. User $ 2 $ transmits $ 2 $ bytes.
- Millisecond $ 11 $ : User $ 1 $ transmits $ 3 $ bytes. User $ 2 $ transmits $ 3 $ bytes.
- Millisecond $ 12 $ : Congestion occurs, and no user transmits data.
- Millisecond $ 13 $ : User $ 2 $ transmits $ 2 $ bytes.
- Millisecond $ 14 $ : User $ 2 $ transmits $ 3 $ bytes.
- Millisecond $ 15 $ : User $ 2 $ transmits $ 4 $ bytes.
- Millisecond $ 16 $ : User $ 2 $ transmits $ 5 $ bytes.
- Millisecond $ 17 $ : User $ 2 $ transmits $ 6 $ bytes.
- Millisecond $ 18 $ : Congestion occurs, and no user transmits data.
- Millisecond $ 19 $ : User $ 2 $ transmits $ 3 $ bytes.
- Millisecond $ 20 $ : User $ 2 $ transmits $ 4 $ bytes.