#include<iostream>
using namespace std;
int a[100010];
int main(){
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++){
int x,y;
cin>>x>>y;
a[x]+=y;//a数组记录第x天有多少个桃子成熟
}
int ans=0;
for(int i=1;;i++){
int mm=m;
if(a[i-1]){//如果前一天没摘完,先摘前一天的
int t=min(a[i-1],mm);
mm-=t;//还能摘几个
ans+=t;
}
if(a[i]){
int t=min(a[i],mm);
ans+=t;
a[i]-=t;
}
if(i>10010)break;//懒得记最大天数了hh
}
cout<<ans<<endl;
}
由于每天摘的桃子个数有限,并且对摘桃子的时间有特殊限制,
我们一个贪心的思路就是可以先摘比较旧的桃子,这样的话可以最大限度的保证能多摘到桃子