小图灵AC 云斗AC,但洛谷上的数据WA#8 95pts
#include <cmath>
#include <iostream>
using namespace std;
int N;
double d;
struct st {
long long pos, pri;
} p[100005];
int main() {
cin >> N >> d;
p[1].pos = 0;
for (int i = 2; i <= N; i++) {
long long dis;
cin >> dis;
p[i].pos = p[i - 1].pos + dis;
}
for (int i = 1; i <= N; i++) cin >> p[i].pri;
long long ans = 0;
int last = 1;
double remain = 0;
for (int i = 2; i <= N; i++) {
if (p[i].pri < p[last].pri || i == N) {
long long dis = p[i].pos - p[last].pos;
double cost = dis * 1.0 / d; // 到下一站要花费的油
if (remain < cost) {
long long buy = ceil(cost - remain); // 要买的油
ans += buy * p[last].pri; // 买油的钱
remain += buy * 1.0;
}
remain -= cost;
last = i;
}
}
cout << ans << endl;
return 0;
}