【贪心】Songs Compression

17暑假练习赛2 Codeforces Round #501 (Div. 3)  1015C


贪心水题,思路简单

坑点:不开long long会过不去,以后统一用long long做题

失误:考虑到了最小值大于容量的情况却没判断最大值小于容量的情况


#include<iostream>
#include<algorithm>
using namespace std;
long long int n,m,ans;//n songs  m max_store
struct Song
{
		long long int before,after,differ;
}song[100008];
bool cmp(Song a,Song b){return a.differ>b.differ;}
long long int maxx,minn;
int main()
{
    while(cin>>n>>m)
	{
		maxx=0,minn=0,ans=0;
		for(long long int i=1;i<=n;i++)
		{
			cin>>song[i].before>>song[i].after;
			song[i].differ=song[i].before-song[i].after;
			maxx+=song[i].before;minn+=song[i].after;
		}
		if(minn>m) cout<<"-1"<<endl;
		else if(minn==m) cout<<n<<endl;
		else if(maxx<=m) cout<<"0"<<endl;
		else{
			sort(song+1,song+n+1,cmp);
			for(long long int i=1;maxx>m&&i<=n;i++)
			{
				maxx-=song[i].differ;
				ans++;
			}
			cout<<ans<<endl;
		}
	}
}

猜你喜欢

转载自blog.csdn.net/u011590573/article/details/81395644
今日推荐