USACO1.1 Greedy Gift Givers(gift1)

        将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;
}

你可能感兴趣的:(USACO)