#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
using namespace std;
typedef std::vector<std::string> String1D;
typedef std::vector<String1D> String2D;
int main() {
String2D masiv_C0(14, String1D(2));
masiv_C0[0][0]="A";
masiv_C0[0][1]="ADF";
masiv_C0[1][0]="AB";
masiv_C0[1][1]="F";
masiv_C0[2][0]="AD";
masiv_C0[2][1]="ADF";
masiv_C0[3][0]="AF";
masiv_C0[3][1]="ADF";
masiv_C0[4][0]="B";
masiv_C0[4][1]="BCF";
masiv_C0[5][0]="BC";
masiv_C0[5][1]="BC";
masiv_C0[6][0]="BD";
masiv_C0[6][1]="F";
masiv_C0[7][0]="BF";
masiv_C0[7][1]="BF";
masiv_C0[8][0]="C";
masiv_C0[8][1]="BC";
masiv_C0[9][0]="CF";
masiv_C0[9][1]="B";
masiv_C0[10][0]="D";
masiv_C0[10][1]="ADF";
masiv_C0[11][0]="DF";
masiv_C0[11][1]="ADF";
masiv_C0[12][0]="E";
masiv_C0[12][1]="E";
masiv_C0[13][0]="F";
masiv_C0[13][1]="ABDF";
// а это "образцы"
String2D masiv_X0(3, String1D(2));
masiv_X0[0][0]="A";
masiv_X0[0][1]="ADF";
masiv_X0[1][0]="C";
masiv_X0[1][1]="BC";
masiv_X0[2][0]="D";
masiv_X0[2][1]="ADF";
String2D masiv_Y1 = masiv_C0;
// цикл по образцам
for (int i = 0; i < masiv_X0.size(); ++i) {
// цикл по мишеням
//// идём с конца, чтобы при удалени не нарушать порядок
//// в итоге получается -1, поэтому счётчик знаковый
for (int j = masiv_C0.size() - 1; j >= 0; --j) {
// нужно ли удалять мишень
bool todel = true;
// цикл по символам
for (int sym = 0; sym < masiv_X0[i].size(); ++sym) {
// если хоть один символ не совпал
if (masiv_X0[i][sym] != masiv_C0[j][sym]) {
// удалять не надо
todel = false;
break;
}
}
// если нужно удалить мишень
if (todel) {
masiv_Y1.erase(masiv_Y1.begin() + j);
}
}
}
String2D::iterator iter = masiv_Y1.begin();
// вывод
while (iter != masiv_Y1.end()) {
std::copy((*iter).begin(), (*iter).end(), std::ostream_iterator<std::string>(cout, " "));
cout << "\n";
++iter;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8aXRlcmF0b3I+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdHlwZWRlZiBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gU3RyaW5nMUQ7CnR5cGVkZWYgc3RkOjp2ZWN0b3I8U3RyaW5nMUQ+IFN0cmluZzJEOwoKaW50IG1haW4oKSB7CiAgICBTdHJpbmcyRCBtYXNpdl9DMCgxNCwgU3RyaW5nMUQoMikpOwogICAgbWFzaXZfQzBbMF1bMF09IkEiOwogICAgbWFzaXZfQzBbMF1bMV09IkFERiI7CiAgICBtYXNpdl9DMFsxXVswXT0iQUIiOwogICAgbWFzaXZfQzBbMV1bMV09IkYiOwogICAgbWFzaXZfQzBbMl1bMF09IkFEIjsKICAgIG1hc2l2X0MwWzJdWzFdPSJBREYiOwogICAgbWFzaXZfQzBbM11bMF09IkFGIjsKICAgIG1hc2l2X0MwWzNdWzFdPSJBREYiOwogICAgbWFzaXZfQzBbNF1bMF09IkIiOwogICAgbWFzaXZfQzBbNF1bMV09IkJDRiI7CiAgICBtYXNpdl9DMFs1XVswXT0iQkMiOwogICAgbWFzaXZfQzBbNV1bMV09IkJDIjsKICAgIG1hc2l2X0MwWzZdWzBdPSJCRCI7CiAgICBtYXNpdl9DMFs2XVsxXT0iRiI7CiAgICBtYXNpdl9DMFs3XVswXT0iQkYiOwogICAgbWFzaXZfQzBbN11bMV09IkJGIjsKICAgIG1hc2l2X0MwWzhdWzBdPSJDIjsKICAgIG1hc2l2X0MwWzhdWzFdPSJCQyI7CiAgICBtYXNpdl9DMFs5XVswXT0iQ0YiOwogICAgbWFzaXZfQzBbOV1bMV09IkIiOwogICAgbWFzaXZfQzBbMTBdWzBdPSJEIjsKICAgIG1hc2l2X0MwWzEwXVsxXT0iQURGIjsKICAgIG1hc2l2X0MwWzExXVswXT0iREYiOwogICAgbWFzaXZfQzBbMTFdWzFdPSJBREYiOwogICAgbWFzaXZfQzBbMTJdWzBdPSJFIjsKICAgIG1hc2l2X0MwWzEyXVsxXT0iRSI7CiAgICBtYXNpdl9DMFsxM11bMF09IkYiOwogICAgbWFzaXZfQzBbMTNdWzFdPSJBQkRGIjsKCiAgICAvLyDQsCDRjdGC0L4gItC+0LHRgNCw0LfRhtGLIgogICAgU3RyaW5nMkQgbWFzaXZfWDAoMywgU3RyaW5nMUQoMikpOwogICAgbWFzaXZfWDBbMF1bMF09IkEiOwogICAgbWFzaXZfWDBbMF1bMV09IkFERiI7CiAgICBtYXNpdl9YMFsxXVswXT0iQyI7CiAgICBtYXNpdl9YMFsxXVsxXT0iQkMiOwogICAgbWFzaXZfWDBbMl1bMF09IkQiOwogICAgbWFzaXZfWDBbMl1bMV09IkFERiI7CgogICAgU3RyaW5nMkQgbWFzaXZfWTEgPSBtYXNpdl9DMDsKICAgIC8vINGG0LjQutC7INC/0L4g0L7QsdGA0LDQt9GG0LDQvAogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtYXNpdl9YMC5zaXplKCk7ICsraSkgewogICAgICAgIC8vINGG0LjQutC7INC/0L4g0LzQuNGI0LXQvdGP0LwKICAgICAgICAvLy8vINC40LTRkdC8INGBINC60L7QvdGG0LAsINGH0YLQvtCx0Ysg0L/RgNC4INGD0LTQsNC70LXQvdC4INC90LUg0L3QsNGA0YPRiNCw0YLRjCDQv9C+0YDRj9C00L7QugogICAgICAgIC8vLy8g0LIg0LjRgtC+0LPQtSDQv9C+0LvRg9GH0LDQtdGC0YHRjyAtMSwg0L/QvtGN0YLQvtC80YMg0YHRh9GR0YLRh9C40Log0LfQvdCw0LrQvtCy0YvQuQogICAgICAgIGZvciAoaW50IGogPSBtYXNpdl9DMC5zaXplKCkgLSAxOyBqID49IDA7IC0taikgewogICAgICAgICAgICAvLyDQvdGD0LbQvdC+INC70Lgg0YPQtNCw0LvRj9GC0Ywg0LzQuNGI0LXQvdGMCiAgICAgICAgICAgIGJvb2wgdG9kZWwgPSB0cnVlOwogICAgICAgICAgICAvLyDRhtC40LrQuyDQv9C+INGB0LjQvNCy0L7Qu9Cw0LwKICAgICAgICAgICAgZm9yIChpbnQgc3ltID0gMDsgc3ltIDwgbWFzaXZfWDBbaV0uc2l6ZSgpOyArK3N5bSkgewogICAgICAgICAgICAgICAgLy8g0LXRgdC70Lgg0YXQvtGC0Ywg0L7QtNC40L0g0YHQuNC80LLQvtC7INC90LUg0YHQvtCy0L/QsNC7CiAgICAgICAgICAgICAgICBpZiAobWFzaXZfWDBbaV1bc3ltXSAhPSBtYXNpdl9DMFtqXVtzeW1dKSB7CiAgICAgICAgICAgICAgICAgICAgLy8g0YPQtNCw0LvRj9GC0Ywg0L3QtSDQvdCw0LTQvgogICAgICAgICAgICAgICAgICAgIHRvZGVsID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8g0LXRgdC70Lgg0L3Rg9C20L3QviDRg9C00LDQu9C40YLRjCDQvNC40YjQtdC90YwKICAgICAgICAgICAgaWYgKHRvZGVsKSB7CiAgICAgICAgICAgICAgICBtYXNpdl9ZMS5lcmFzZShtYXNpdl9ZMS5iZWdpbigpICsgaik7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgU3RyaW5nMkQ6Oml0ZXJhdG9yIGl0ZXIgPSBtYXNpdl9ZMS5iZWdpbigpOwogICAgLy8g0LLRi9Cy0L7QtAogICAgd2hpbGUgKGl0ZXIgIT0gbWFzaXZfWTEuZW5kKCkpIHsKICAgICAgICBzdGQ6OmNvcHkoKCppdGVyKS5iZWdpbigpLCAoKml0ZXIpLmVuZCgpLCBzdGQ6Om9zdHJlYW1faXRlcmF0b3I8c3RkOjpzdHJpbmc+KGNvdXQsICIgIikpOwogICAgICAgIGNvdXQgPDwgIlxuIjsKICAgICAgICArK2l0ZXI7CiAgICB9CgogICAgcmV0dXJuIDA7Cn0K