从本星期一直算上库存成本往后推即可。
#include <iostream>
#include <stdio.h>
using namespace std;
#define maxn 10000
int N,S;
int C[maxn],Y[maxn];
int main(int argc, const char * argv[]) {
cin>>N>>S;
for(int i=0;i<N;i++){
scanf("%d%d",&C[i],&Y[i]);
}
long long sum = 0;
int index = 0;
while(index<N){
int c = C[index];
int bias = 0;
while( (index + bias) <N && (C[index]+bias*S)<=C[bias+index]){
sum += (C[index]+bias*S) * Y[index + bias];
++bias;
}
index = index + bias;
}
cout<<sum<<endl;
return 0;
}