将np个人名保存到string a[10]中,对应s[10]是他们的收钱和送钱差。对于从np+2到最后每一组输入,先找到此人的位置k,然后计算他送出钱的总数,取相反数保存进s[k],然后分别将找到他送钱的人的位置k,在s[k]中加上送给他的钱数。
/*
ID: jzzlee1
PROG: gift1
LANG: C++
*/
#include <fstream>
using namespace std;
ifstream fin("gift1.in");
ofstream fout("gift1.out");
int s[10];
int main()
{
int np,i,j,k,money,ng;
string a[10],str1,str2;
fin>>np;
for (i=0;i<np;i++)
fin>>a[i];
for (i=0;i<np;i++)
{
fin>>str1>>money>>ng;
for (k=0;str1!=a[k];k++);
if(ng)
s[k]-=money-money%ng;
for (j=0;j<ng;j++)
{
fin>>str2;
for (k=0;str2!=a[k];k++);
s[k]+=money/ng;
}
}
for (i=0;i<np;i++)
fout<<a[i]<<' '<<s[i]<<endl;
return 0;
}