fork download
  1. #include <iostream>
  2. #include <chrono>
  3. #include <vector>
  4. #include <algorithm>
  5. #include <iterator>
  6.  
  7. using Time = std::chrono::high_resolution_clock;
  8. using us = std::chrono::microseconds;
  9.  
  10. int main()
  11. {
  12. for (int z=0;z<20;z++) {
  13. volatile int i, k;
  14. const int n = 1000000, kmax=200,n_avg=30;
  15. std::vector<long> v(kmax,0);
  16.  
  17. for(k = 0; k < kmax; ++k) {
  18. auto begin = Time::now();
  19. for (i = 0; i < n; ++i); // <--
  20. auto end = Time::now();
  21. auto dur = std::chrono::duration_cast<us>(end - begin).count();
  22. v[k]=dur;
  23. }
  24.  
  25. long avg1=1,avg2=0;
  26. for (int j=0; j<n_avg; j++){ avg1+=v[j]; avg2+=v[kmax-1-j]; }
  27. avg1 /=n_avg; avg2 /=n_avg;
  28. std::cout <<"Values between "<< *min_element(v.begin(),v.end()) <<"-"<< *max_element(v.begin(), v.end()) <<" ";
  29. std::cout << "Average "<<n_avg<<" first/last : " << avg1 <<"-"<<avg2<<" ";
  30. if (avg1>=avg2) std::cout<< avg1-avg2;
  31. std::cout<<std::endl;
  32. //std::copy (v.begin(), v.end(), std::ostream_iterator<long>(std::cout,"\n"));
  33. }
  34. return 0;
  35. }
Time limit exceeded #stdin #stdout 5s 3460KB
stdin
Standard input is empty
stdout
Values between 3179-6618  Average 30 first/last : 3527-3317  210
Values between 3179-3365  Average 30 first/last : 3309-3327  
Values between 3207-3346  Average 30 first/last : 3321-3318  3
Values between 3174-3343  Average 30 first/last : 3323-3315  8
Values between 3184-3433  Average 30 first/last : 3321-3320  1
Values between 3236-3351  Average 30 first/last : 3327-3320  7
Values between 3194-3349  Average 30 first/last : 3325-3324  1