您的位置:首页 > 其它

Codeforces Round #132 (Div. 2) D. Hot Days

2014-11-05 01:17 295 查看
D. Hot Days

time limit per test
2 seconds

memory limit per test
256 megabytes

input
standard input

output
standard output

The official capital and the cultural capital of Berland are connected by a single road running through
n regions. Each region has a unique climate, so the
i-th (1 ≤ i ≤ n) region has a stable temperature of
ti degrees in summer.

This summer a group of m schoolchildren wants to get from the official capital to the cultural capital to visit museums and sights. The trip organizers transport the children between the cities in buses, but sometimes
it is very hot. Specifically, if the bus is driving through the
i-th region and has k schoolchildren, then the temperature inside the bus is
ti + k degrees.

Of course, nobody likes it when the bus is hot. So, when the bus drives through the
i-th region, if it has more than
Ti degrees inside, each of the schoolchild in the bus demands compensation for the uncomfortable conditions. The compensation is as large as
xi rubles and it is charged in each region where the temperature in the bus exceeds the limit.

To save money, the organizers of the trip may arbitrarily add or remove extra buses in the beginning of the trip, and between regions (of course, they need at least one bus to pass any region). The organizers can also arbitrarily sort the children into buses,
however, each of buses in the i-th region will cost the organizers
costi rubles. Please note that sorting children into buses takes no money.

Your task is to find the minimum number of rubles, which the organizers will have to spend to transport all schoolchildren.

Input
The first input line contains two integers n and
m (1 ≤ n ≤ 105; 1 ≤ m ≤ 106) — the number of regions on the way and the number
of schoolchildren in the group, correspondingly. Next n lines contain four integers each: the
i-th line contains
ti,
Ti,
xi and
costi (1 ≤ ti, Ti, xi, costi ≤ 106).
The numbers in the lines are separated by single spaces.

Output
Print the only integer — the minimum number of roubles the organizers will have to spend to transport all schoolchildren.

Please, do not use the %lld specifier to read or write 64-bit integers in С++. It is preferred to use cin, cout streams or the
%I64d specifier.

Sample test(s)

Input
2 10
30 35 1 100
20 35 10 10


Output
120


Input
3 100
10 30 1000 1
5 10 1000 3
10 40 1000 100000


Output
200065


Note
In the first sample the organizers will use only one bus to travel through the first region. However, the temperature in the bus will equal
30 + 10 = 40 degrees and each of
10 schoolchildren will ask for compensation. Only one bus will transport the group through the second region too, but the temperature inside won't exceed the limit. Overall, the organizers will spend
100 + 10 + 10 = 120 rubles.

#include <iostream>
#include <stdio.h>
#include <string>
#include <cstring>
#include <algorithm>
#include <cmath>
#define N 10000009
#define ll __int64
#define INF 1<<30
using namespace std;

ll t;
ll T;
ll x;
ll c;
ll n,m;

int main()
{
    while(~scanf("%I64d%I64d",&n,&m))
    {

        ll ans=0;

        for(ll i=1;i<=n;i++)
        {
            scanf("%I64d%I64d%I64d%I64d",&t,&T,&x,&c);
            if(T<=t)
            {
                ans+=m*x+c;
                continue;
            }

             if(m<=T-t)
            {
                ans+=c;
                continue;
            }

                ll ff1,ff2;
                ff1=m*x+c;//全部挤在一起
                ff2=c*(m%(T-t)==0?m/(T-t):(m/(T-t)+1));

                ans+=min(ff1,ff2);
            }
             printf("%I64d\n",ans);

    }

    return 0;
}
/*

10 1
8 6 3 4
9 10 7 7
1 3 9 5
10 9 4 2
1 10 2 10
1 1 8 5
5 5 9 2
5 8 4 3
4 4 9 7
5 7 5 10

*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: