#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;


template<class T>
class Array
{
private:
  vector<T> arr;
public:
  Array(int size) : arr(size) {}

  void random()
  {
    for (int i = 0; i < arr.size(); i++)
    {
      T randomNumber = -5 + (rand() % ((100 - 1) * 1 + 1)) / T(10);
      arr[i] = randomNumber;
    }
  }

  void print() { for (int i = 0; i < arr.size(); i++) cout << arr[i] << " "; cout << endl; }

  T diff()
  {
    auto first_negative = find_if(arr.begin(), arr.end(), [](const T& var){ return var < 0; });
    if (first_negative == arr.end())
      return 0;

    int counter = 0;
    auto second_positive = find_if(arr.begin(), arr.end(), [&counter](const T& var){
      if (var > 0)
        counter++;
      if (counter == 2)
        return true;
      else return false;
    });

    if (second_positive == arr.end())
      return 0;

    return *first_negative - *second_positive;
  }
};


int main()
{
  Array<double> ar(10);
  ar.random();
  ar.print();
  cout << ar.diff() << endl;
  return 0;
}