#include #include #include #include using namespace std; vector sourceA; vector sourceB; vector result; string lineA; string lineB; int indexA; int indexB; string word; bool present(const string s) { for (unsigned int i = 0; i < result.size(); i++) { if (s == result[i]) { return true; } } return false; } bool presentInRestOfA(const string s) { for (unsigned int i = indexA + 1/*+2?*/; i < sourceA.size(); i++) { if (s == sourceA[i]) { return true; } } return false; } bool presentInRestOfB(const string s) { for (unsigned int i = indexB + 1/*+2?*/; i < sourceB.size(); i++) { if (s == sourceB[i]) { return true; } } return false; } int main(void) { do { getline(cin, lineA); if (lineA != ".") { getline(cin, lineB); stringstream streamA(lineA); stringstream streamB(lineB); sourceA.clear(); sourceB.clear(); result.clear(); do { streamA >> word; if (word != ".") { sourceA.push_back(word); } } while (word != "."); do { streamB >> word; if (word != ".") { sourceB.push_back(word); } } while (word != "."); // mame nacteno indexA = 0; indexB = 0; while ((indexA < sourceA.size()) || (indexB < sourceB.size())) { if ((indexA < sourceA.size()) && (indexB < sourceB.size())) { if (sourceA[indexA] < sourceB[indexB]) { if (!presentInRestOfB(sourceA[indexA])) { if (!present(sourceA[indexA])) { result.push_back(sourceA[indexA]); } indexA++; } else { // my cekame, popohnat druhou radu if (!present(sourceB[indexB])) { result.push_back(sourceB[indexB]); } indexB++; } } else { if (!presentInRestOfA(sourceB[indexB])) { if (!present(sourceB[indexB])) { result.push_back(sourceB[indexB]); } indexB++; } else { // my cekame, popohnat druhou radu if (!present(sourceA[indexA])) { result.push_back(sourceA[indexA]); } indexA++; } } } else if (indexA < sourceA.size()) { if (!presentInRestOfB(sourceA[indexA])) { if (!present(sourceA[indexA])) { result.push_back(sourceA[indexA]); } indexA++; } } else { if (!presentInRestOfA(sourceB[indexB])) { if (!present(sourceB[indexB])) { result.push_back(sourceB[indexB]); } indexB++; } } } // vypsat result for (unsigned int i = 0; i < result.size(); i++) { cout << result[i] << " "; } cout << "." << endl; } } while (lineA != "."); return 0; }