这个题就比较简单了,算是我做的最快的几个题之一了,不过还是WA了一次,因为看到“Note that the total might be too large for a 32-bit integer.”后,我果断使用了long类型而忘了long也是32位,还好我很快就反应过来了,不然又要浪费时间去检查代码了。
/*i周的per unit of yogurt的最低成本为b[i]
最低cost即求和b[i]*Y[i]
递推可得b[i]的值
b[0] = c[0];
b[i] = min(b[i-1]+S, c[i]);
*/
#include<cstdio>
#include<algorithm>
using namespace std;
const int MAX_N = 10005;
long long ans;
int N, S, C[MAX_N], Y[MAX_N], b[MAX_N];
void ini()
{
for(int i=0; i<N; i++)
scanf("%d%d", &C[i], &Y[i]);
ans = C[0] * Y[0];
}
void f()
{
b[0] = C[0];
for(int i=1; i<N; i++){
b[i] = min(b[i-1]+S, C[i]);
ans += b[i] * Y[i];
}
}
int main()
{
while(~scanf("%d%d", &N, &S)){
ini();
f();
printf("%lld", ans);
}
return 0;
}