记录编号 26014 评测结果 WWAAWWAWWWA
题目名称 解析程序 最终得分 36
用户昵称 Gravatar苏轼 是否通过 未通过
代码语言 C++ 运行时间 0.003 s
提交时间 2011-07-22 16:03:42 内存使用 0.26 MiB
显示代码纯文本
#include <cstdio>
#include <cstdlib>
#include <cstring>

const int MAXL=505;

char now[MAXL],*str=now;
char buf[MAXL],*nbuf=buf;

bool begin,end,begino;
void reset()
{
	begin=end=begino=false;
}
void wrong()
{
	printf("Wrong Format\n");
	exit(0);
}
void output()
{
	char *tnow=now;
	if (begino)
	{
		for(char *i=now;i<str;i++)
			if (*i=='\n' || *i=='\"' || *i==',')
				wrong();
		while(tnow<str && (*(str-1)==' ' || *(str-1)==9))
		{
			str--;
			*str=0;
		}
		while(tnow<str && (*tnow==' ' || *tnow==9))
			tnow++;
	}
	nbuf+=sprintf(nbuf,"%s\r\n",tnow);
	memset(now,0,sizeof(now));
	str=now;
	reset();
}

int main()
{
	freopen("parser.in","r",stdin);
	freopen("parser.out","w",stdout);
	char ch;
	while((ch=getchar())!=EOF)
	{
		if (ch=='\n')
		{
			if (begin)
				if (end)
					output();
				else
					*str++=ch;
			else
				output();
		}
		else if (ch==' ' || ch=='	')
		{
			if (begin)
			{
				if (!end)
					*str++=ch;
			}
			else
				if (begino)
					*str++=ch;
		}
		else if (ch=='\"')
		{
			if (begin)
				if (end)
				{
					*str++=ch;
					end=false;
				}
				else
					end=true;
			else
				if (begino)
					wrong();
				else
					begin=true;
		}
		else if (ch==',')
		{
			if (begin)
				if (end)
					output();
				else
					*str++=ch;
			else
				output();
		}
		else
		{
			if (begin)
				if (end)
					wrong();
				else
					*str++=ch;
			else
			{
				begino=true;
				*str++=ch;
			}
		}
	}
	printf("%s",buf);
	return 0;
}