# 題目: UVa 11572 - Unique Snowflakes
# 題目說明
Emily有一個很酷的想法:包裝雪花並販售
她設計了一個自動包裝雪花的機器
但是,她想讓每一個雪花包裝都不同
寫一個程式找出最大雪花包裝的大小
INPUT:
第一行為一個整數n,代表有n筆資料
每筆資料第一行為一個整數k,代表有k片雪花
接下來有k行,每行有一個整數,代表雪花的編號
OUTPUT:
每筆資料輸出最多能裝幾片雪花
# 解題方法
求一個陣列中最長的不重複子陣列
如果遇到重複的雪花,則記錄長度並刪除最前項
# 參考程式碼
#include <iostream>
#include <unordered_set>
#include <vector>
using namespace std;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int n, k, temp;
size_t total;
unordered_set<int> snowflake;
vector<int> cpy;
cin >> n;
while (n--) {
total = 0;
cin >> k;
while (k--) {
cin >> temp;
if (snowflake.count(temp)) total = max(total, snowflake.size());
while (snowflake.count(temp)) snowflake.erase(*cpy.begin()), cpy.erase(cpy.begin());
cpy.emplace_back(temp);
snowflake.emplace(temp);
}
total = max(total, snowflake.size());
cout << total << "\n";
snowflake.clear();
cpy.clear();
}
return 0;
}