int play_list(vector arr) { if (arr.size() == 0) return 0; if (arr.size() == 1) return 1; int length = 1; int start = 0, end = 1; while (start < arr.size()) { int set = 0; // Move to the nearest similar "end" while (true) { // Check "end" with everything between it and "start" bool success = true; for (int i = start; i < end; i++) { if (arr[end] == arr[i]) { success = false; set = i; break; } } // When there's something similar to "end" if (!success) { int temp = end - start; if (temp > length) length = temp; break; } // Or "end" is different else { end++; if (end >= arr.size()) { int temp = end - start; if (temp > length) length = temp; break; } } } // Check "start" if (set == 0) start++; else start = set + 1; } return length; }