比赛 20120416 评测结果 AAAAAAAAAA
题目名称 奶牛队列 最终得分 100
用户昵称 Citron酱 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2012-04-16 08:26:19
显示代码纯文本
#include <cstdio>

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

struct lb
{
	lb *l, *r;
	int x;
}*left=NULL, *right=NULL;
int m=0;

void Addcow(const char&, const int&);
void Delcow(const char&, const int&);

int main()
{
	int s, k, n=1;
	char t,d;
	freopen(I_F,"r",stdin);
	scanf("%d",&s);
	for (int i=0; i<s; i++)
	{
		scanf("%c%c%c%c",&t,&t,&d,&d);
		if (t=='A')
			Addcow(d,n++);
		else
		{
			scanf("%d",&k);
			Delcow(d,k);
		}
	}
	freopen(O_F,"w",stdout);
	for (lb *i=left; i!=NULL; i=i->r)
		printf("%d\n",i->x);
}

void Addcow(const char &d, const int &x)
{
	m++;
	if (left==NULL)
	{
		left=new lb;
		left->l=left->r=NULL;
		left->x=x;
		right=left;
	}
	else
		if (d=='L')
		{
			left->l=new lb;
			left->l->r=left;
			left=left->l;
			left->l=NULL;
			left->x=x;
		}
		else
		{
			right->r=new lb;
			right->r->l=right;
			right=right->r;
			right->r=NULL;
			right->x=x;
		}
}

void Delcow(const char &d, const int &k)
{
	lb *t;
	int x=(k<m)?k:m;
	if (d=='L')
	{
		for (int i=0; i<x; i++)
		{
			t=left;
			left=left->r;
			delete t;
		}
		if (left==NULL)
			right=NULL;
	}
	else
	{
		for (int i=0; i<x; i++)
		{
			t=right;
			right=right->l;
			delete t;
		}
		if (right==NULL)
			left=NULL;
	}
	m-=x;
}