#include <vector>
#include <map>
#include <iostream>

std::vector<std::size_t> findDuplicateIndices(std::vector<int> const & v)
{
	std::vector<std::size_t> indices;
	std::map<int, std::pair<int, std::size_t>> counts;

	for (std::size_t i = 0 ; i < v.size() ; ++i)
	{
		std::size_t amount = ++counts[v[i]].first;
		/**/ if (amount == 1)
		{
			counts[v[i]].second = i;
			continue;
		}
		else if (amount == 2)
			indices.push_back(counts[v[i]].second);

		indices.push_back(i);
	}
	return indices;
}

int main()
{
	auto duplicateIndices = findDuplicateIndices({1,1,2,3,4,1,3});
	for (auto i : duplicateIndices) std::cout << i << ',';
	std::cout << std::endl;
}