为什么。。。(3个AC,3个WA,4个RE)
查看原帖
为什么。。。(3个AC,3个WA,4个RE)
377511
果圆楼主2021/8/11 09:32
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
const int N=50010,mod=1145141;
int a[N],h[mod],ne[N],u;
struct sun
{
	int x;
	bool f;
}ha[N];

inline void rd(int &x)
{
	x=0;int f=1;char c=getchar();
	while((c<'0'||c>'9')&&c!='-') c=getchar();
	if(c=='-') f=-1,c=getchar();
	while(c<='9'&&c>='0') x=x*10+c-'0',c=getchar();
	x*=f;
}

void wdwd(int x)
{
	int w=x;
	x=(x%mod+mod)%mod;
	bool flag=0;
	for(int i=h[x];i;i=ne[i])
	{
		if(ha[i].x==w)
		{
			flag=1;
			break;
		}
	}
	if(!flag)
	{
		u++;
		ha[u].x=w;
		ne[u]=h[x];
		h[x]=u;
	}
}

int main()
{
	int T;
	rd(T);
	while(T--)
	{
		memset(ha,0,sizeof ha);
		memset(ne,0,sizeof ne);
		memset(h,0,sizeof h);
		
		int n;
		rd(n);
		
		for(int i=1;i<=n;i++)
		{
		    rd(a[i]);
			wdwd(a[i]);	
		}
		
		for(int i=1;i<=n;i++)
		{
			int x=a[i];
			x=(x%mod+mod)%mod;
			for(int j=h[x];j;j=ne[j])
			{
				if(ha[j].x==a[i])
				{
					if(ha[j].f==1) break;
					else
					{
						printf("%d ",a[i]);
						ha[j].f=1;
						break;
					}
				}
			}
		}
		
		puts("");
	}
	return 0;
}
2021/8/11 09:32
加载中...