// ===================================================================================== // // Filename: win.cpp // // Description: // // Version: 1.0 // Created: 2018年 02月 19日 星期一 20:59:06 CST // Revision: none // Compiler: g++ // // Author: Jinkun Lin, jkunlin@gmail.com // Organization: School of EECS, Peking University // // ===================================================================================== #include #include #include #include #include #include using namespace std; int main(int argc, char const *argv[]) { if (argc != 2) { std::cout << "usage: " << std::endl; return 1; } ifstream in_file(argv[1]); if (!in_file) { std::cout << "file error" << std::endl; return 1; } string line; istringstream is; int solver_count = 0; int is_win; getline(in_file, line); is.str(line); while (is >> is_win) { solver_count++; } vector win_count (solver_count, 0); vector okay_count (solver_count, 0); vector solver_time (solver_count, 0); vector exact_count (solver_count, 0); do { // win count is.clear(); is.str(line); for (int i = 0; is >> is_win; ++i) { win_count[i] += is_win; } // time summary getline(in_file, line); is.clear(); is.str(line); double t; for (int i = 0; is >> t; ++i) { solver_time[i] += t; } // okay count getline(in_file, line); is.clear(); is.str(line); int okay; for (int i = 0; is >> okay; ++i) { okay_count[i] += okay; } // exact count getline(in_file, line); is.clear(); is.str(line); int exact; for (int i = 0; is >> exact; ++i) { exact_count[i] += exact; } } while (getline(in_file, line)); std::cout << win_count[0] << " & " << round(solver_time[0] / okay_count[0] * 100) / 100; for (int i = 1; i < solver_count; ++i) { std::cout << " & " << win_count[i] << " & " << round(solver_time[i] / okay_count[i] * 100) / 100; } std::cout << std::endl; std::cout << exact_count[0]; for (int i = 1; i < solver_count; ++i) { std::cout << " & " << exact_count[i]; } std::cout << std::endl; return 0; }