| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- // =====================================================================================
- //
- // 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 <iostream>
- #include <sstream>
- #include <fstream>
- #include <vector>
- #include <string>
- #include <algorithm>
- 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<int> win_count (solver_count, 0);
- vector<int> okay_count (solver_count, 0);
- vector<double> solver_time (solver_count, 0);
- vector<int> 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;
- }
|