OPENJUDGE LIST

# include <iostream>
# include <list>
# include <string>
# include <map>
# include <sstream>
# include <cstdio>

using namespace std;

map<int,list<int> > listMap;

void printList(list<int>& l)
{
	list<int>::iterator i;
	for ( i = l.begin(); i != l.end(); i++ )
	{
		printf("%d ",*i);
	}
	printf("\n");
}

void commandTranslator(stringstream& s,string& str)
{
	int opr1 = 0;
	int opr2 = 0;		//operators for instructions
	list<int> l;
	map<int,list<int> >::iterator i;
	map<int,list<int> >::iterator j;
	if ( str == "new" )
	{
		s >> opr1;
		listMap.insert(make_pair(opr1,l));
	}
	if ( str == "add" )
	{
		s >> opr1;
		s >> opr2;
		i = listMap.find(opr1);
		if ( i != listMap.end() )
		{
			i->second.push_back(opr2);
		}
		else return;
	}
	if ( str == "merge" )
	{
		s >> opr1;
		s >> opr2;
		i = listMap.find(opr1);
		j = listMap.find(opr2);
		if ( i != listMap.end() && j != listMap.end() )
		{
			i->second.merge(j->second);
		}
		else return;
	}
	if ( str == "unique" )
	{
		s >> opr1;
		i = listMap.find(opr1);
		if ( i != listMap.end() )
		{
			i->second.sort();
			i->second.unique();
		}
		else return;
	}
	if ( str == "out" )
	{
		s >> opr1;
		i = listMap.find(opr1);
		if ( i != listMap.end() )
		{
			i->second.sort();
			printList(i->second);
		}
		else return;
	}	
}

int main()
{
	int n = 0;
	stringstream s;	//Storage For Instructions
	int commandNo = 0;
	char input[100];
	string inputString;
	string instruction;	//Instruction
	
	cin >> n;
	cin.ignore();
	for ( int i = 0; i < n; i++ )
	{
		gets(input);
		inputString = input;
		stringstream s(inputString);
		s >> instruction;
		commandTranslator(s,instruction);	//Decode And RunInstructions
	}
	return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值