蛮水的一个贪心,维护当前最优价格就好,可以把储藏时间看做额外加价的次数,每过一周都在最优价上加一次储藏价,然后不断更新最优价即可,注意数据开long long。
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
int main()
{
long long n, s;
while(scanf("%lld%lld",&n,&s)!=EOF)
{
long long sum=0, tpc=99999999;
for(int i=1; i<=n; i++)
{
long long c, y;
scanf("%lld%lld",&c,&y);
tpc=min(c,tpc+s);
sum+=tpc*y;
}
printf("%lld\n",sum);
}
return 0;
}