60分求调(hash后4个点wa)
查看原帖
60分求调(hash后4个点wa)
723046
huziting楼主2024/11/13 15:17
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=5e5+5,mod=5e5,INF=-0x3f3f3f3f3f3f;
int T,n;
int Hash[N],a[N];
int find(int x)
{
	int place=(x%mod+mod)%mod;
	while(Hash[place]!=x && Hash[place]!=INF)
	{
		place++;
		if(place==mod)
		{
			place=0;
		}
	}
	return place;
}
void empty()
{
	for(int i=0;i<=mod;i++)
	{
		Hash[i]=INF;
	}
}
signed main()
{
	scanf("%lld",&T);
	while(T--)
	{
		cin>>n;
		empty();
		for(int i=1;i<=n;i++)
		{
			scanf("%lld",&a[i]);
			Hash[find(a[i])]=a[i];
		}
		for(int i=1;i<=n;i++)
		{
			if(Hash[find(a[i])]!=INF)
			{
				printf("%lld ",a[i]);
				Hash[find(a[i])]=INF;
			}
		}
		printf("\n");
	}
	return 0;
}
2024/11/13 15:17
加载中...