#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);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKdm9pZCBwcmludF92ZWNfcGFpcihzdGQ6OnZlY3RvcjxzdGQ6OnBhaXI8aW50LCBpbnQ+PiYgdikgewoKCWZvciAoY29uc3QgYXV0byYgYSA6IHYpIHsKCQlzdGQ6OmNvdXQgPDwgIigiIDw8IGEuZmlyc3QgPDwgIiwgIiA8PCBhLnNlY29uZCA8PCAiKSAiOwoJfQoJc3RkOjpjb3V0IDw8IHN0ZDo6ZW5kbDsKfQoKYm9vbCBjb21wYXJlX3BhaXJzKHN0ZDo6cGFpcjxpbnQsIGludD4mIGEsIHN0ZDo6cGFpcjxpbnQsIGludD4mIGIpIHsKCglpZiAoYS5zZWNvbmQgPT0gYi5zZWNvbmQpCgkJcmV0dXJuIHRydWU7CgllbHNlCgkJcmV0dXJuIGZhbHNlOwp9CgpzdGQ6OnZlY3RvcjxzdGQ6OnBhaXI8aW50LCBpbnQ+PiBkZWNpbWF0aW9uKHN0ZDo6dmVjdG9yPHN0ZDo6cGFpcjxpbnQsIGludD4+JiBkYXRhLCBpbnQgTikgewoKCXN0ZDo6dmVjdG9yPHN0ZDo6cGFpcjxpbnQsIGludD4+IHJlczsKCWludCBjbnQgPSAxOwoKCWZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGF0YS5zaXplKCktMTsgaSsrKSB7CgkKCQlpZiAoY250ID09IDEgfHwgY250ID09IE4pIHsKCQkJcmVzLnB1c2hfYmFjayhkYXRhW2ldKTsKCQkJaWYgKGNudCA9PSBOKSB7CgkJCQljbnQgPSAxOwoJCQl9CgkJfQoKCQlpZiAoY29tcGFyZV9wYWlycyhkYXRhW2ldLCBkYXRhW2kgKyAxXSkpIHsKCQkJY250Kys7CgkJfQoJCWVsc2UgewoJCQljbnQgPT0gMTsKCQl9CgkKCX0KCglyZXR1cm4gcmVzOwp9CgoKaW50IG1haW4oKQp7CglzdGQ6OnZlY3RvcjxzdGQ6OnBhaXI8aW50LCBpbnQ+PiBkYXRhOwoJZGF0YS5wdXNoX2JhY2soeyAxLCAxMCB9KTsKCWRhdGEucHVzaF9iYWNrKHsgMiwgMTEgfSk7CglkYXRhLnB1c2hfYmFjayh7IDMsIDExIH0pOwoJZGF0YS5wdXNoX2JhY2soeyA0LCAxMSB9KTsKCWRhdGEucHVzaF9iYWNrKHsgNSwgMTEgfSk7CglkYXRhLnB1c2hfYmFjayh7IDYsIDEwIH0pOwoJZGF0YS5wdXNoX2JhY2soeyA3LCAxMSB9KTsKCWRhdGEucHVzaF9iYWNrKHsgOCwgMTEgfSk7CglkYXRhLnB1c2hfYmFjayh7IDksIDExIH0pOwoJZGF0YS5wdXNoX2JhY2soeyAxMCwgMTEgfSk7CglkYXRhLnB1c2hfYmFjayh7IDExLCAxMSB9KTsKCWRhdGEucHVzaF9iYWNrKHsgMTIsIDExIH0pOwoJZGF0YS5wdXNoX2JhY2soeyAxMywgMTEgfSk7CglkYXRhLnB1c2hfYmFjayh7IDE0LCAxMCB9KTsKCglhdXRvIHJlc3VsdDMgPSBkZWNpbWF0aW9uKGRhdGEsIDMpOwoJYXV0byByZXN1bHQ0ID0gZGVjaW1hdGlvbihkYXRhLCA0KTsKCglwcmludF92ZWNfcGFpcihkYXRhKTsKCXN0ZDo6Y291dCA8PCBzdGQ6OmVuZGw7CglwcmludF92ZWNfcGFpcihyZXN1bHQzKTsKCXN0ZDo6Y291dCA8PCBzdGQ6OmVuZGw7CglwcmludF92ZWNfcGFpcihyZXN1bHQ0KTsKfQ==
(1, 10) (2, 11) (3, 11) (4, 11) (5, 11) (6, 10) (7, 11) (8, 11) (9, 11) (10, 11) (11, 11) (12, 11) (13, 11) (14, 10)
(1, 10) (2, 11) (4, 11) (8, 11) (10, 11) (12, 11)
(1, 10) (2, 11) (5, 11) (6, 10) (7, 11) (10, 11) (13, 11)