win.cpp 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. // =====================================================================================
  2. //
  3. // Filename: win.cpp
  4. //
  5. // Description:
  6. //
  7. // Version: 1.0
  8. // Created: 2018年 02月 19日 星期一 20:59:06 CST
  9. // Revision: none
  10. // Compiler: g++
  11. //
  12. // Author: Jinkun Lin, jkunlin@gmail.com
  13. // Organization: School of EECS, Peking University
  14. //
  15. // =====================================================================================
  16. #include <iostream>
  17. #include <sstream>
  18. #include <fstream>
  19. #include <vector>
  20. #include <string>
  21. #include <algorithm>
  22. using namespace std;
  23. int main(int argc, char const *argv[]) {
  24. if (argc != 2) {
  25. std::cout << "usage: " << std::endl;
  26. return 1;
  27. }
  28. ifstream in_file(argv[1]);
  29. if (!in_file) {
  30. std::cout << "file error" << std::endl;
  31. return 1;
  32. }
  33. string line;
  34. istringstream is;
  35. int solver_count = 0;
  36. int is_win;
  37. getline(in_file, line);
  38. is.str(line);
  39. while (is >> is_win) {
  40. solver_count++;
  41. }
  42. vector<int> win_count (solver_count, 0);
  43. vector<int> okay_count (solver_count, 0);
  44. vector<double> solver_time (solver_count, 0);
  45. vector<int> exact_count (solver_count, 0);
  46. do {
  47. // win count
  48. is.clear(); is.str(line);
  49. for (int i = 0; is >> is_win; ++i) {
  50. win_count[i] += is_win;
  51. }
  52. // time summary
  53. getline(in_file, line);
  54. is.clear(); is.str(line);
  55. double t;
  56. for (int i = 0; is >> t; ++i) {
  57. solver_time[i] += t;
  58. }
  59. // okay count
  60. getline(in_file, line);
  61. is.clear(); is.str(line);
  62. int okay;
  63. for (int i = 0; is >> okay; ++i) {
  64. okay_count[i] += okay;
  65. }
  66. // exact count
  67. getline(in_file, line);
  68. is.clear(); is.str(line);
  69. int exact;
  70. for (int i = 0; is >> exact; ++i) {
  71. exact_count[i] += exact;
  72. }
  73. } while (getline(in_file, line));
  74. std::cout << win_count[0] << " & " << round(solver_time[0] / okay_count[0] * 100) / 100;
  75. for (int i = 1; i < solver_count; ++i) {
  76. std::cout << " & " << win_count[i] << " & " << round(solver_time[i] / okay_count[i] * 100) / 100;
  77. }
  78. std::cout << std::endl;
  79. std::cout << exact_count[0];
  80. for (int i = 1; i < solver_count; ++i) {
  81. std::cout << " & " << exact_count[i];
  82. }
  83. std::cout << std::endl;
  84. return 0;
  85. }