大意略。
/* ID:g0feng1 LANG:C++ TASK:gift1 */ #include <iostream> #include <fstream> #include <cstdlib> #include <cstdio> #include <string> #include <cstring> #include <cmath> #include <map> #include <algorithm> using namespace std; ofstream fout("gift1.out"); ifstream fin("gift1.in"); map<string, int > Map, Count; map<int, string> sa; map<string, int>::iterator it1; void init() { sa.clear(); Map.clear(); Count.clear(); } int n; void read_case() { init(); int val, people; string str, sen, rec; fin>>n; for(int i = 0; i < n; i++) { fin>>str; Map[str] = 0; sa[i] = str; } for(int i = 0; i < n; i++) { fin>>sen; fin>>val>>people; Count[sen] = val; Map[sen] += val; if(people == 0) continue; Map[sen] -= val; if(val % people != 0) Map[sen] += val % people; for(int i = 0; i < people; i++) { fin>>rec; Map[rec] += val / people; } } } void solve() { read_case(); for(int i = 0; i < n; i++) { int a = Map[sa[i]], b = Count[sa[i]]; fout<<sa[i]<<" "<<a-b<<endl; } } int main() { solve(); return 0; }