fork(1) download
  1. #include <iostream>
  2. #include <chrono>
  3. #include <algorithm>
  4.  
  5. using namespace std;
  6. using namespace std::chrono;
  7. constexpr size_t size = 10000000;
  8.  
  9. void fill_array (int T[size]) {
  10. for (size_t counter = 0, i = 0; counter < size / 2; ++i) {
  11. if (i == size - 1)
  12. i = 0;
  13.  
  14. if (rand() % 3 == 0 && T[i] == 0) {
  15. T[i] = rand();
  16. ++counter;
  17. }
  18. }
  19. }
  20.  
  21. size_t solution_a (const int T[size]) {
  22. size_t sum = 0;
  23. for (size_t i = 0; i < size; ++i)
  24. sum += T[i];
  25.  
  26. return sum;
  27. }
  28.  
  29. size_t solution_b (const int T[size]) {
  30. size_t sum = 0;
  31.  
  32. for (size_t i = 0; i < size; ++i) {
  33. if (T[i] != 0) {
  34. sum += T[i];
  35. }
  36. }
  37.  
  38. return sum;
  39. }
  40.  
  41.  
  42. int main () {
  43. int *Array = new int[size];
  44. fill_array(Array);
  45. //sort(Array, Array + size);
  46.  
  47. {
  48. high_resolution_clock::time_point start = high_resolution_clock::now();
  49. cout << solution_a(Array) << endl;
  50. high_resolution_clock::time_point stop = high_resolution_clock::now();
  51.  
  52. auto time_span = duration_cast<chrono::microseconds>(stop - start);
  53.  
  54. std::cout << "solution_a took " << time_span.count() << " microseconds" << endl;
  55. }
  56.  
  57. // ----------------------------------------------------------------------
  58.  
  59. {
  60. high_resolution_clock::time_point start = high_resolution_clock::now();
  61. cout << solution_b(Array) << endl;
  62. high_resolution_clock::time_point stop = high_resolution_clock::now();
  63.  
  64. auto time_span = duration_cast<chrono::microseconds>(stop - start);
  65.  
  66. std::cout << "solution_b took " << time_span.count() << " microseconds" << endl;
  67. }
  68.  
  69. delete[] Array;
  70. return 0;
  71. }
Success #stdin #stdout 0.78s 3412KB
stdin
Standard input is empty
stdout
2351769765
solution_a took 12610 microseconds
2351769765
solution_b took 48052 microseconds