#include <iostream>
#include <vector>

void print_vec_pair(std::vector<std::pair<int, int>>& v) {

	for (const auto& a : v) {
		std::cout << "(" << a.first << ", " << a.second << ") ";
	}
	std::cout << std::endl;
}

bool compare_pairs(std::pair<int, int>& a, std::pair<int, int>& b) {

	if (a.second == b.second)
		return true;
	else
		return false;
}

std::vector<std::pair<int, int>> decimation(std::vector<std::pair<int, int>>& data, int N) {

	std::vector<std::pair<int, int>> res;
	int cnt = 1;

	for (size_t i = 0; i < data.size()-1; i++) {
	
		if (cnt == 1 || cnt == N) {
			res.push_back(data[i]);
			if (cnt == N) {
				cnt = 1;
			}
		}

		if (compare_pairs(data[i], data[i + 1])) {
			cnt++;
		}
		else {
			cnt == 1;
		}
	
	}

	return res;
}


int main()
{
	std::vector<std::pair<int, int>> data;
	data.push_back({ 1, 10 });
	data.push_back({ 2, 11 });
	data.push_back({ 3, 11 });
	data.push_back({ 4, 11 });
	data.push_back({ 5, 11 });
	data.push_back({ 6, 10 });
	data.push_back({ 7, 11 });
	data.push_back({ 8, 11 });
	data.push_back({ 9, 11 });
	data.push_back({ 10, 11 });
	data.push_back({ 11, 11 });
	data.push_back({ 12, 11 });
	data.push_back({ 13, 11 });
	data.push_back({ 14, 10 });

	auto result3 = decimation(data, 3);
	auto result4 = decimation(data, 4);

	print_vec_pair(data);
	std::cout << std::endl;
	print_vec_pair(result3);
	std::cout << std::endl;
	print_vec_pair(result4);
}