记录编号 29816 评测结果 AAAAAAAAAA
题目名称 背诵单词 最终得分 100
用户昵称 GravatarTruth.Cirno 是否通过 通过
代码语言 C++ 运行时间 0.005 s
提交时间 2011-10-26 09:47:17 内存使用 0.26 MiB
显示代码纯文本
#include <cstdio>
#include <cstring>
using namespace std;

int len[100];
char word[100][30];

void swap(int a,int b)
{
	int i,maxlen,temp;
	temp=len[a];
	len[a]=len[b];
	len[b]=temp;
	maxlen=(len[a]>len[b])?len[a]:len[b];
	for (i=0;i<maxlen;i++)
	{
		temp=word[a][i];
		word[a][i]=word[b][i];
		word[b][i]=temp;
	}
}

bool checked(int a,int b)
{
	int i,minlen;
	bool abigger;
	minlen=(len[a]<len[b])?len[a]:len[b];
	for (i=0;i<minlen;i++)
		if (word[a][i]<word[b][i])
		{
			abigger=false;
			break;
		}
		else if (word[a][i]>word[b][i])
		{
			abigger=true;
			break;
		}
	if (i==minlen)
		if (len[a]<len[b])
			abigger=false;
		else
			abigger=true;
	if (abigger)
	{
		swap(a,b);
		return(false);
	}
	return(true);
}

int main(void)
{
	freopen("letter.in","r",stdin);
	freopen("letter.out","w",stdout);
	int i,j,n;
	scanf("%d",&n);
	for (i=0;i<n;i++)
	{
		scanf("%s",&word[i]);
		len[i]=strlen(word[i]);
		for (j=i;j>0;j--)
			if (checked(j-1,j))
				break;
	}
	for (i=0;i<n;i++)
		printf("%s\n",word[i]);
	fclose(stdin);
	fclose(stdout);
	return(0);
}