模拟。
如果用$map$的话,会很好写。
如果你不会$map$的话,在此小广告:https://blog.csdn.net/CQBZLYTina/article/details/80063739
1 /* 2 ID:Starry21 3 LANG:C++ 4 TASK:gift1 5 */ 6 #include<iostream> 7 #include<string> 8 #include<cstdio> 9 #include<cstring> 10 #include<map> 11 using namespace std; 12 #define N 15 13 int n; 14 map<string,int> init; 15 map<string,int> rev; 16 string name[N]; 17 int main() 18 { 19 //freopen("gift1.in","r",stdin); 20 //freopen("gift1.out","w",stdout); 21 scanf("%d",&n); 22 string a,b; 23 for(int i=1;i<=n;i++) 24 cin>>name[i]; 25 for(int i=1;i<=n;i++) 26 { 27 cin>>a; 28 scanf("%d",&init[a]); 29 int k;scanf("%d",&k); 30 if(k==0) continue; 31 int m=init[a]/k; 32 init[a]=m*k; 33 for(int i=1;i<=k;i++) 34 { 35 cin>>b; 36 rev[b]+=m; 37 } 38 } 39 for(int i=1;i<=n;i++) 40 { 41 cout<<name[i]; 42 printf(" %d ",rev[name[i]]-init[name[i]]); 43 } 44 return 0; 45 }