小 T 开办了一家机器工厂,在 N个星期内,原材料成本和劳动力价格不断起伏,第 i 周生产一台机器需要花费 Ci​ 元。若没把机器卖出去,每保养一台机器,每周需要花费 S 元,这个费用不会发生变化。

机器工厂接到订单,在第 i 周需要交付 Yi​ 台机器给委托人,第 i 周刚生产的机器,或者之前的存货,都可以进行交付。

请你计算出这 n 周时间内完成订单的最小代价。

输入格式

第一行输入两个整数 N 和 S,接下来 N 行每行两个数 Ci​ 和 Yi​。

输出格式

输出一个整数,表示最少的代价。

输入输出样例

输入 #1复制

4 5
88 200
89 400
97 300
91 500

输出 #1复制

126900

说明/提示

1≤n≤104,1≤Ci​≤5000,1≤S≤100,0≤Yi​≤104。

#include<bits/stdc++.h>//万能头文件

using namespace std;

int min(int x,int y)//比较函数,懒得写头文件

{

    return x>y?y:x;//三目运算符,解释下如果x>y为ture,则返回y,反之x.

}

int main()

{

    int n,s;

    int c,y;

    long long  ans,sum=0;

    cin>>n>>s;

    cin>>c>>y;//第一个入读,特殊处理,由于前面没有生产机器

    ans=c;

    sum+=ans*y;

    for(int i=1;i<n;i++)

    {

        cin>>c>>y;

        ans=min(ans+s,c);//和之前的价值+维修费与现状的价钱比较,找小的

        sum+=ans*y;//计算

    }

    cout<<sum;

    return 0;

}

更多推荐