#include <iostream>
#include <cstring>
#include <string>
#include <cstdio>
#include <algorithm>
#include <queue>
using namespace std;
const int N=10005;
priority_queue<int,vector<int>,greater<int> > h;
long long ans;
int c[N],y[N];
int n,s,tmp;
int main() www.2cto.com
{
int i;
freopen("in.txt","r",stdin);
scanf("%d%d",&n,&s);
for (i=1;i<=n;i++)
scanf("%d%d",&c[i],&y[i]);
ans=0;
for (i=1;i<=n;i++)
{
tmp=c[i];
if (h.size()>0) tmp=min(tmp,h.top()+i*s);
ans+=(long long)tmp*y[i];
h.push(c[i]-i*s);
}
cout << ans << endl;
}
POJ 2393(使用二叉堆来做)
最新推荐文章于 2021-09-11 15:30:31 发布