题目
用last_price表示最小单价,如果下一个月的生产成本大于上一个月价格+储存费用,便在上一个月提前生产。
结果要用long long 保存。
#include <iostream>
#include <cstdio>
#include <cmath>
#include <iomanip>
#include <queue>
#include <map>
#include <cstring>
#include <algorithm>
using namespace std;
struct Milk{
int C;//单个成本
int Y;//总量
};
typedef long long ll;
int N, S;
Milk milk[10001];
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cin >> N >> S;
for (int i = 0; i < N; i++) {
cin >> milk[i].C >> milk[i].Y;
}
ll ans = milk[0].C * milk[0].Y;
int last_price = milk[0].C + S;
for (int i = 1; i < N; i++) {
if (milk[i].C > last_price) {
ans += milk[i].Y * last_price;
last_price += S;
}
else {
ans += milk[i].C * milk[i].Y;
last_price = milk[i].C + S;
}
}
cout << ans << endl;
return 0;
}