#include #include #include using namespace std; void merge(const vector & vect1, const vector & vect2){ size_t i1 = 0, i2 = 0, diff1 = 0, diff2 = 0, len1 = vect1.size(), len2 = vect2.size(); //cout << " '" << len1 << "," << len2 <<"' "; while(i1 < len1 && i2 < len2){ if(vect1[i1] == vect2[i2]){ cout << vect1[ i1 ] << " "; i1++; i2++; continue; } diff1 = 0; diff2 = 0; while((i1 + diff1) < len1 && vect2[i2] != vect1[ i1 + diff1 ]){ diff1++; } while((i2 + diff2) < len2 && vect1[i1] != vect2[ i2 + diff2 ]){ diff2++; } //cout << " '" << diff1 << "," << diff2 <<"' "; if((i1 + diff1) == len1 && (i2 + diff2) == len2){ if(vect1[i1] < vect2[i2]) cout<< vect1[ i1++ ] << " "; else cout<< vect2[ i2++ ] << " "; continue; } if((i1 + diff1) == len1){ while(diff2--){ cout << vect2[ i2++ ] << " "; } cout << vect2[ i2++ ] << " "; i1++; continue; } if((i2 + diff2) == len2){ while(diff1--){ cout << vect1[ i1++ ] << " "; } cout << vect1[ i1++ ] << " "; i2++; continue; } if(diff1 < diff2){ while(diff1--){ cout << vect1[ i1++ ] << " "; } cout << vect1[ i1++ ] << " "; i2++; continue; }else{ while(diff2--){cout << " '" << diff1 << "," << diff2 <<"' "; cout << vect2[ i2++ ] << " "; } cout << vect2[ i2++ ] << " "; i1++; continue; } } while(i1 < len1){ cout << vect1[ i1++ ] << " "; } while(i2 < len2){ cout << vect2[ i2++ ] << " "; } cout << ".\n"; } int main(){ string str; vector vect1, vect2; while(1){ vect1.clear(); vect2.clear(); cin >> str; if(str == "."){ return 0; } while(str != "."){ vect1.push_back(str); cin >> str; } cin >> str; while(str != "."){ vect2.push_back(str); cin >> str; } merge(vect1, vect2); } return 0; }