題目描述
如你所知,中國素來有發紅包的習俗。ios
新年要到了,小明想要知道朋友圈裏每一個人的收益。app
每一個人有mi數量的錢用來發紅包,而且這筆錢會平均地發給ki我的(收益獲得的錢再也不發紅包)。spa
並且發給每一個人的錢都是整數。若是不能整除,發紅包的人保留mi mod ki的錢。code
輸入
第1行,一個整數n,2<=n<=10,小明的n個朋友。blog 第 2到n+1行每行一個字符串,第i+1行表示第i我的的名字。內存 接下來n段:ci 每段第一行是一個字符串,表示發紅包的人的名字。字符串 第二行爲兩個數mi,ki。含義如上。string 接下來ki行,每行一個字符串表示被髮紅包的人的名字。it
|
樣例輸入
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
|
輸出
n行,每行一個字符串和一個整數,分別表示第i我的的名字和收益。
|
樣例輸出
dave 302 laura 66 owen -359 vick 141 amr -150
|
時間限制C/C++語言:1000MS其它語言:3000MS
|
內存限制C/C++語言:65536KB其它語言:589824KB
|
#include<iostream> #include<string> #include<map> #include<vector> using namespace std; int main() { int n; int ss[10][2]; map<string, int> mapp; string sss[10];//記錄原始的名字輸入順序 string name[10];//記錄要發紅包的人 string str[10][10];//記錄某我的要發給某些人 while (cin >> n) { for (int i = 0; i < n; ++i) { cin >> sss[i]; mapp.insert(pair<string, int>(sss[i], 0)); } for (int i = 0; i < n; ++i) { cin >> name[i]; cin >> ss[i][0] >> ss[i][1]; for (int j = 0; j < ss[i][1]; ++j) cin >> str[i][j]; } for (int i = 0; i < n; i++) { if (ss[i][1]) { int s = ss[i][0] / ss[i][1]; int t = ss[i][0] % ss[i][1]; for (int j = 0; j < ss[i][1]; ++j) mapp[str[i][j]] += s; mapp[name[i]] += t; mapp[name[i]] -= ss[i][0]; } } for (int i = 0; i < n; i++) { cout << sss[i] << " " << mapp[sss[i]] << endl; } } return 0; }