rt,哈希。
#include <iostream>
#include <cstdio>
#include <string.h>
#define int long long
using namespace std;
int T, n;
const int SIZE = 50010;
const long long M = 999997;
struct Node {
int next, key;
} data[SIZE];
int f(int key) {
return (key % M + M) % M;
}
int head[M], size;
bool add(int key, int value) {
for(int p = head[f(key)]; p; p = data[p].next)
if(data[p].key == key) return false;
data[++size] = (Node) {head[f(key)], key};
head[f(key)] = size;
return true;
}
signed main() {
scanf("%lld", &T);
while(T--) {
size = 0;
scanf("%lld", &n);
for(int i = 0; i < SIZE; i++) data[i].key = 0;
memset(head, 0, sizeof(head));
for(int i = 1; i <= n; i++) {
long long t;
scanf("%lld", &t);
if(add(f(t), t)){
printf("%lld ", t);
}
}
cout << endl;
}
return 0;
}
本人目前不在线,可能无法及时回复