# 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;
}
OPENJUDGE LIST
最新推荐文章于 2024-01-08 21:48:21 发布