problemscpp
A collection of my answers to algorithm problems in c++.
| 函数
pat::b::b1085 命名空间参考

1085 PAT单位排行 更多...

struct  school
 

函数

int main (istream &cin, ostream &cout)
 
 TEST (b1085, case1)
 

详细描述

1085 PAT单位排行

函数说明

◆ main()

int pat::b::b1085::main ( istream &  cin,
ostream &  cout 
)

在文件 pat.cpp2958 行定义.

2958 {
2959 int n;
2960 cin >> n;
2961 unordered_map<string, school> schools;
2962 for(int i = 0; i < n; i++) {
2963 string id;
2964 string sc;
2965 int score;
2966 cin >> id >> score >> sc;
2967 stringstream ss;
2968 for(char ch: sc) {
2969 ss << static_cast<char>(tolower(ch));
2970 }
2971 sc = ss.str();
2972 if(!schools.contains(sc)) {
2973 schools[sc] = school(sc);
2974 }
2975 schools[sc].count++;
2976 switch(id[0]) {
2977 case 'A':
2978 schools[sc].a_sum += score;
2979 break;
2980 case 'B':
2981 schools[sc].b_sum += score;
2982 break;
2983 case 'T':
2984 schools[sc].t_sum += score;
2985 break;
2986 default: return 1;
2987 }
2988 }
2989 vector<school> vec;
2990 vec.reserve(schools.size());
2991 for(const auto &[id, sc]: schools) {
2992 vec.push_back(sc);
2993 }
2994 sort(vec.rbegin(), vec.rend());
2995 unordered_map<int, int> score_rank;
2996 for(int i = vec.size() - 1; i >= 0; i--) {
2997 score_rank[vec[i].get_score()] = i + 1;
2998 }
2999 cout << vec.size() << endl;
3000 for(int i = 0; i < vec.size(); i++) {
3001 const auto &sc = vec[i];
3002 cout << score_rank[sc.get_score()] << ' ' << sc.id << ' ' << sc.get_score() << ' ' << sc.count << endl;
3003 }
3004 return 0;
3005 }
int vec[100010]
Definition: pat.cpp:5095

引用了 pat::a::a7_2::vec.

被这些函数引用 TEST().

◆ TEST()

pat::b::b1085::TEST ( b1085  ,
case1   
)

在文件 pat_test.cpp1468 行定义.

1468 {
1469 istringstream in("10\n"
1470 "A57908 85 Au\n"
1471 "B57908 54 LanX\n"
1472 "A37487 60 au\n"
1473 "T28374 67 CMU\n"
1474 "T32486 24 hypu\n"
1475 "A66734 92 cmu\n"
1476 "B76378 71 AU\n"
1477 "A47780 45 lanx\n"
1478 "A72809 100 pku\n"
1479 "A03274 45 hypu");
1480 auto out = ostringstream();
1481 main(in, out);
1482 const auto ans = out.str();
1483 ASSERT_EQ("5\n"
1484 "1 cmu 192 2\n"
1485 "1 au 192 3\n"
1486 "3 pku 100 1\n"
1487 "4 hypu 81 2\n"
1488 "4 lanx 81 2\n",
1489 out.str());
1490 }
int main(int argc, char **argv)
Definition: main.cpp:5

引用了 main().