#ifndef PMERGEME_HPP
# define PMERGEME_HPP

#include <algorithm>
#include <ctime>
#include <deque>
#include <iostream>
#include <sstream>
#include <stdexcept>
#include <string>
#include <iomanip>
#include <vector>

class PmergeMe
{
    public:
        PmergeMe();
        PmergeMe(const PmergeMe &other);
        PmergeMe &operator=(const PmergeMe &other);
        ~PmergeMe();

        void run(int ac, char **av);

    private:
        std::vector<int> _vec;
        std::deque<int>  _deq;
        double _vecTime;
        double _deqTime;

		void printDeque() const;
		void printVector() const;

		void parseInput(int ac, char **av);

        void sortVector();
        void sortDeque();

        std::vector<int> fordJohnsonVec(std::vector<int> v);
        std::deque<int> fordJohnsonDeque(std::deque<int> v);

};

#endif
