比赛 20120420 评测结果 AAAWWWW
题目名称 昵称 最终得分 42
用户昵称 Citron酱 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2012-04-20 09:13:35
显示代码纯文本
#include <cstdio>
#include <string>
#include <cstdlib>

#define I_F "nickname.in"
#define O_F "nickname.out"

const long MAXn=100000;
const short MAXl=100+1;
const short P=20;

long n;
std::string s[MAXn];

void Input();
void Sort(const long&, const long&);
void Output();

int main()
{
	int m;
	freopen(I_F,"r",stdin);
	freopen(O_F,"w",stdout);
	for (scanf("%d",&m); m>0; --m)
	{
		Input();
		Sort(0,n-1);
		Output();
	}
	return 0;
}

void Input()
{
	char t[MAXl];
	scanf("%ld",&n);
	for (long i=0; i<n; i++)
	{
		scanf("%s",&t);
		s[i]=t;
		for (short j=0; j<s[i].length(); j++)
			if (s[i][j]<'a')
				s[i][j]=s[i][j]-'A'+'a';
	}
}

void Sort(const long &l, const long &r)
{
	if (r-l>P)
	{
		std::string x=s[l+rand()%(r-l+1)];
		long i=l, j=r;
		do
		{
			while (s[i]<x) ++i;
			while (s[j]>x) --j;
			if (i<=j)
				s[i++].swap(s[j--]);
		} while (i<j);
	}
	else
	{
		bool flag=true;
		for (long i=l; i<r && flag; i++)
		{
			flag=false;
			for (long j=r; j>i; j--)
				if (s[j-1]>s[j])
					s[j-1].swap(s[j]);
		}
	}
}

void Output()
{
	printf("%s ",s[0].c_str());
	long t=1;
	for (long i=1; i<n; i++)
		if (s[i]!=s[i-1])
		{
			printf("%ld\n%s ",t,s[i].c_str());
			t=1;
		}
		else
			++t;
	printf("%ld\n",t);
}