UVA119 题解
题目分析
模拟题意即可,主题库里的这一题和它差不多,有一些细节需要注意。
-
有一些数据会出现某人给 \(0\) 个人送礼物,此时需要特判,否则将出现运行时错误。
-
此题在输出时不能有多余的空行,需要注意。
-
当准备的钱不能被需要送的人数整除的时候需要退还剩余的钱。
-
此题是多测,注意要清空。
Code
#include<bits/stdc++.h>
using namespace std;
int n,num,cost,t;
string s[15],name,x;
bool flag;
map<string,int> ans;
int main(){
while(cin>>n){
if(flag) cout<<endl;
flag=1;
for(int i=1;i<=n;i++) cin>>s[i];
for(int i=1;i<=n;i++){
cin>>name;
cin>>t>>num;
if(!num) continue;
cost=t/num;
ans[name]-=cost*num;
while(num--){
cin>>x;
ans[x]+=cost;
}
}
for(int i=1;i<=n;i++){
cout<<s[i]<<" "<<ans[s[i]]<<endl;
ans[s[i]]=0;
}
}
return 0;
}