RT,这题折磨我半天了,实在调不出来
#include<bits/stdc++.h>
#define int long long
using namespace std;
char ch;
int n,p,m,mid,mid2,submagic;
struct item
{
int magic;
int normle;
};
bool ok(item a,item b)
{
return a.magic-a.normle<b.magic-b.normle;
}
item s[100005];
signed main()
{
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
scanf("%lld%lld",&n,&p);
for(int i=1;i<=n;i++)
{
scanf("%lld",&mid);
if(getchar()!=32)m+=mid;
else
{
scanf("%lld",&mid2);
if(mid2-mid<p)m+=mid;
else
{
submagic++;
s[submagic].magic=mid2;
s[submagic].normle=mid;
}
}
}
sort(s+1,s+submagic+1,ok);
for(int i=1;i<=submagic;i++)
{
if(m>=p)m=m+s[i].magic-p;
else m+=s[i].normle;
}
cout<<m;
return 0;
}