最简单直接又粗暴的方法。。。慢慢成长
/*
ID: 13913351
LANG: C
PROG: gift1
*/
#include<stdio.h>
#include<string.h>
#define N 11
char s[N][20]; //存储人名
int sum[N]; //存钱罐
char giv[20]; //送礼人
char rec[20]; //接受礼物的人
int money;
int num;
int main()
{
FILE *fin = fopen ("gift1.in", "r");
FILE *fout = fopen ("gift1.out", "w");
int n;
fscanf(fin,"%d",&n); //总人数
int i,j,k;
for(i=0;i<n;i++)
{
fscanf(fin,"%s",s[i]); //存储人名
}
for(i=0;i<n;i++) //每个人都要送一遍礼
{
fscanf(fin,"%s",giv); //送礼人
fscanf(fin,"%d%d",&money,&num);//准备总金额为money,将要送给num个人
if(num==0)continue; //num=0时 ,循环结束,没有考虑有钱但是没有送人的吝啬鬼
for(j=0;j<n;j++)
{
if(strcmp(giv,s[j])==0) //看看谁送滴
{
sum[j]-=num*(money/num);break;//存钱罐出钱了
}
}
for(k=0;k<num;k++)
{
fscanf(fin,"%s",rec);
for(j=0;j<n;j++)
{
if(strcmp(rec,s[j])==0) //看看送给了谁
{
sum[j]+=(money/num);break;//存钱罐来钱了
}
}
}
}
for(i=0;i<n;i++)
{
fprintf(fout,"%s %d\n",s[i],sum[i]);
}
return 0;
}