解題心得:
https://codist.me/zh/blog/stl-set/
程式碼:
#include <iostream> #include <set> #include <iomanip> using namespace std; struct soldier { string name; int type, rank; bool operator<(const soldier &right) const { if (name != right.name) return name < right.name; else { if (type != right.type) return type < right.type; else return rank < right.rank; } } }; int main() { std::ios::sync_with_stdio(false); std::cin.tie(0); int n, m; cin >> n >> m; set<soldier> legion; while (m--) { soldier tmp; cin >> tmp.name >> tmp.type >> tmp.rank; legion.insert(tmp); } int navy = 0, army = 0, air = 0, officer = 0, sergeant = 0, soldier = 0; for (auto it = legion.begin(); it != legion.end(); it++) { if ((*it).type == 1) navy++; if ((*it).type == 2) army++; if ((*it).type == 3) air++; if ((*it).rank == 1) officer++; if ((*it).rank == 2) sergeant++; if ((*it).rank == 3) soldier++; } cout << "navy:" << navy << " army:" << army << " air:" << air << endl; cout << "officer:" << officer << " sergeant:" << sergeant << " soldier:" << soldier << endl; cout << fixed << setprecision(1) << "survival rate: " << (double)legion.size() / n * 100 << "%"; return 0; }
沒有留言:
張貼留言