# 題目: 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;
}

# 參考資料

https://www.larrysprognotes.com/UVa%20-%2011572/