將np我的名保存到string a[10]中,對應s[10]是他們的收錢和送錢差。對於從np+2到最後每一組輸入,先找到此人的位置k,而後計算他送出錢的總數,取相反數保存進s[k],而後分別將找到他送錢的人的位置k,在s[k]中加上送給他的錢數。spa
/* 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; }