这题就是模拟每个人送钱和收钱的过程,要注意的地方是,由于收到的钱都是整数,所以在每一次送钱之后,送钱的人需要加上无法除尽余下的钱。。

#include <iostream>
#include <algorithm>
#include <map>
#include <string>
#include <cstdio>
using namespace std;
const int INF = 0x7f7f7f7f;
map<string,int>mp;
int main()
{
    int n,m,t,i,j;
    string s[20],str;
    cin>>n;
    mp.clear();
    for(i=0;i<n;i++)
        cin>>s[i];
    for(i=0;i<n;i++)
    {
        cin>>str;
        cin>>m>>t;
        mp[str]-=m;
        if(t) mp[str]+=(m-m/t*t);
        for(j=0;j<t;j++)
        {
            cin>>str;
            mp[str]+=(m/t);
        }
    }
    for(i=0;i<n;i++)
        cout<<s[i]<<" "<<mp[s[i]]<<endl;
    return 0;
}

发表评论

电子邮件地址不会被公开。

Post Navigation