/* ID: aznfy1 PROG: gift1 LANG: C++ */ #include <string.h> #include <algorithm> #include <string> #include <iostream> #include <map> #include <stdio.h> #define clr(a,b); memset(a,b,sizeof(a)); using namespace std; string name; char s[100][20]; string tmp; int have,givenum; map<string,int>ma; int main() { freopen("gift1.in","r",stdin); freopen("gift1.out","w",stdout); int n; while(cin>>n) { ma.clear(); for(int i=1;i<=n;i++) { cin>>name; for(int j=0;j<name.length();j++) s[i][j]=name.c_str()[j]; ma[name]=0; } for(int i=1;i<=n;i++) { cin>>name>>have>>givenum; ma[name]+=have; for(int j=1;j<=givenum;j++) { cin>>tmp; ma[tmp]+=have/givenum; ma[name]-=have/givenum; } ma[name]-=have; } for(int i=1;i<=n;i++) { cout<<s[i]<<" "<<ma[s[i]]<<endl; } //注释中的是字典序输出,与要求不符。 /*map<string,int>::const_iterator map_it=ma.begin(); while(map_it!=ma.end()) { cout<<map_it->first<<" "<<map_it->second<<endl; map_it++; }*/ } return 0; }
第二题代码,顺便学了一下STL的map和string 比较浅显的用法。