fork download
  1. #include <vector>
  2. #include <algorithm>
  3. #include <iostream>
  4.  
  5. using namespace std;
  6.  
  7. int diff(const vector<int>& arr)
  8. {
  9. auto first_negative = find_if(arr.begin(), arr.end(), [](const int& var){ return var < 0; });
  10. if (first_negative == arr.end())
  11. return 0;
  12.  
  13. int counter = 0;
  14. auto second_positive = find_if(arr.begin(), arr.end(), [&counter](const int& var){
  15. if (var > 0)
  16. counter++;
  17. if (counter == 2)
  18. return true;
  19. else return false;
  20. });
  21.  
  22. if (second_positive == arr.end())
  23. return 0;
  24.  
  25. return *first_negative - *second_positive;
  26. }
  27.  
  28. int main()
  29. {
  30. vector<int> ar {0, 1, 67, 89, -76, 56, -5, 0, -89, 6, 78, 89};
  31.  
  32. cout << diff(ar) << endl;
  33. cout << diff({0, 0, 0, 0}) << endl;
  34. cout << diff({ -2, 1, 0, -5 }) << endl;
  35. cout << diff({ 12, 10, 70, 5 }) << endl;
  36.  
  37. return 0;
  38. }
Success #stdin #stdout 0s 3428KB
stdin
Standard input is empty
stdout
-143
0
0
0