时间限制:1s内存限制:128M
第二个 NGi 是将收到这个人礼物的人的个数。如果 NGi 是非零的, 在下面 NGi 行列出礼物的接受者的名字,一个名字一行。
【输出格式】
输出 NP 行
每行是人的名字和每个人收到的比送出的钱多的数目
【输入输出样例#1】
输入#1
5 dave laura owen vick amr dave 200 3 laura owen vick owen 500 1 dave amr 150 2 vick owen laura 0 2 amr vick vick 0 0
输出#1
dave 302 laura 66 owen -359 vick 141 amr -150
解法:
#include<iostream>
#include<algorithm>
using namespace std;
struct node
{
string name;
int money;
};
node a[11];
int main()
{
int np;
cin>>np;
for(int i=1;i<=np;i++)cin>>a[i].name;
for(int i=1;i<=np;i++)
{
string name;
cin>>name;
int money,ng;
cin>>money>>ng;
if(ng==0)continue;
for(int j=1;j<=np;j++)
{
if(a[j].name==name)a[j].money-=money/ng*ng;
}
for(int j=1;j<=ng;j++)
{
string s;
cin>>s;
for(int k=1;k<=np;k++)
{
if(a[k].name==s)a[k].money+=money/ng;
}
}
}
for(int i=1;i<=np;i++)
{
cout<<a[i].name<<" "<<a[i].money<<endl;
}
return 0;
}
没登陆的:
#include<iostream>
#include<algorithm>
using namespace std;
struct node
{
string name;
int money;
};
node a[11];
int main()
{
int np;
cin>>np;
for(int i=1;i<=np;i++)cin>>a[i].name;
for(int i=1;i<=np;i++)
{
string name;
cin>>name;
int money,ng;
cin>>money>>ng;
if(ng==0)continue;
for(int j=1;j<=np;j++)
{
if(a[j].name==name)a[j].money-=money/ng*ng;
}
for(int j=1;j<=ng;j++)
{
string s;
cin>>s;
for(int k=1;k<=np;k++)
{
if(a[k].name==s)a[k].money+=money/ng;
}
}
}
for(int i=1;i<=np;i++)
{
cout<<a[i].name<<" "<<a[i].money<<endl;
}
return 0;
}