# 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 发布