#include <vector>
#include <string>
#include <iostream>
#include <algorithm>
#include <iterator>

typedef std::vector<std::string> String1D;
typedef std::vector<String1D> String2D;

using namespace std;

int main()
{
	// create array C0
	String2D masiv_C0(3, String1D(2));
	masiv_C0[0][0]="AB";
	masiv_C0[0][1]="C";
	masiv_C0[1][0]="X";
	masiv_C0[1][1]="Z";
	masiv_C0[2][0]="XY";
	masiv_C0[2][1]="ZQ";

	//create array X0 
	String2D masiv_X0(1, String1D(2));
	masiv_X0[0][0]="X";
	masiv_X0[0][1]="Z";

	//create array Y1 = C0 - X0 (remove from C0 elements X0)
	String2D masiv_Y1 = masiv_C0;
	for ( size_t i = 0; i < masiv_X0.size(); ++i)
	{
		for ( size_t j = 0; j < masiv_X0[i].size(); ++j)
		{
			auto& str = masiv_X0[i][j];
			for (size_t cur = 0; cur < masiv_Y1.size(); ++cur)
			{
				auto iter = std::remove(masiv_Y1[cur].begin(), masiv_Y1[cur].end(), str);
				masiv_Y1[cur].erase(iter, masiv_Y1[cur].end());
			}
		}
	}

	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;
	}
}