#include <iostream>
#include <vector>
std::vector<int> shortest_identical_consecutive_subvector(const std::vector<int>& vec) {
if (vec.empty()) return {};
int bestStart = 0, bestLen = vec.size();
int currentStart = 0, currentLen = 1;
for (int i = 1; i < vec.size(); i++) {
if (vec[i] == vec[i - 1]) {
currentLen++;
} else {
// End of a run — check if it's the shortest
if (currentLen < bestLen) {
bestLen = currentLen;
bestStart = currentStart;
}
currentStart = i;
currentLen = 1;
}
}
// Check the final run
if (currentLen < bestLen) {
bestLen = currentLen;
bestStart = currentStart;
}
return std::vector<int>(vec.begin() + bestStart, vec.begin() + bestStart + bestLen);
}
int main() {
std::vector<int> vec = {3,3,3, 7,7,7,7,7, 2,2, 5,5,5,5, 9,9,9,9,9,9};
std::vector<int> result = shortest_identical_consecutive_subvector(vec);
std::cout << "Shortest identical consecutive subarray: ";
for (int x : result) std::cout << x << " ";
std::cout << std::endl;
return 0;
}
/*
run:
Shortest identical consecutive subarray: 2 2
*/