蒟蒻求助
查看原帖
蒟蒻求助
280604
DiDi123楼主2021/5/22 11:18

前6个点WA,后四个点TLE

#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
const long long N=50001;
const long long MOD=1037109281137996637;
const long long prime=1999999973;
struct node
{
	long long val,rank;
	char ss[33];
};
node a[N],s[N];
long long T,n;
bool cmp1(node x,node y)
{
	return x.val<y.val;
}
bool cmp2(node x,node y)
{
	return x.rank<y.rank;
}
long long hashes(char p[])
{
	long long x=0;
	int i;
	bool ok=false;
	if(p[0]=='-')
	{
		i=1;
		ok=true;
	}
	else i=0;
	for(;i<strlen(p);i++)
	{
		x=(x*10+(long long)p[i])%MOD+prime;
	}
	if(ok) x=-x;
	return x;
}
int main()
{
	cin>>T;
	long long j,cnt;
	for(long long i=1;i<=T;i++)
	{
		cin>>n;
		cnt=1;
		for(j=1;j<=n;j++)
		{
			cin>>a[j].ss;
			a[j].val=hashes(a[j].ss);
			
			a[j].rank=j;
		}
		sort(a+1,a+n+1,cmp1);
		for(j=2;j<=n;j++)
		{
			if(a[j-cnt].val==a[j].val)
			{
				a[j].val=-2e9;
				cnt++;
			}
			else cnt=1;
		}
		for(j=1,cnt=0;j<=n;j++)
		{
			if(a[j].val!=-2e9) s[++cnt]=a[j];
		}
		sort(s+1,s+cnt+1,cmp2);
		for(j=1;j<=cnt;j++) cout<<s[j].ss<<' ';
		cout<<endl;
	}
 } 
2021/5/22 11:18
加载中...