0
点赞
收藏
分享

微信扫一扫

2019河北省大学生程序设计竞赛(重现赛) K题--水题水文章

两岁时就很帅 2022-04-29 阅读 67
c++算法
#include<bits/stdc++.h>
using namespace std;
int n,m;
int main()
{
	cin>>n>>m;
	getchar();
	map<string,long long> go;
	vector<string> cai;
	for(int i=1;i<=n;i++)
	{
		string x;
		int want;
		cin>>x>>want;
		go[x]+=want;
		cai.push_back(x);
	}
	map<string,long long> need;
	for(int i=1;i<=m;i++)
	{
		int k;
		cin>>k;
		getchar();
		for(int j=1;j<=k;j++)
		{
			if(j!=1)
			getchar();
			string x;
			int now;
			cin>>x>>now;
			need[x]+=now;
		}
	}
	bool ok=true;
	for(auto eg:go)
	{
		go[eg.first]-=need[eg.first];
		if(go[eg.first]<0)
		ok=false;
	}
	if(ok)
	{
		cout<<"YES"<<endl;
		for(int i=0;i<cai.size();i++)
		{
			if(go[cai[i]]>0)
			cout<<cai[i]<<" "<<go[cai[i]]<<endl;
		}	
	}
	else
	cout<<"NO"; 
}
举报

相关推荐

0 条评论