1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include <iostream>
#include <string>
#include <vector>

struct Runda
{
	int zadania[3] = {0, 0, 0}; //ilosc zadan dla dywizji
	void DodajZadanie(char dywizja)
	{
		if (dywizja == 'A')
			zadania[0]++;

		else if (dywizja == 'B')
			zadania[1]++;

		else
			zadania[2]++;
	}

	bool DobraRunda(int ileMaBycZadan)
	{
		return ((zadania[0] >= ileMaBycZadan) && (zadania[1] >= ileMaBycZadan) && (zadania[2] >= ileMaBycZadan));
	}
};

int main()
{	

	int ilDanych;
	std::cin >> ilDanych;

	std::vector<Runda> rundy = { Runda(), Runda(), Runda(), Runda(), Runda() };

	while (ilDanych--)
	{
		std::string temp;
		std::cin >> temp;
		rundy[temp[0] - '0' - 1].DodajZadanie(temp[1]);
	}

	bool dobryZestaw = true;

	for (int i = 0; i < 5; i++)
	{
		if (i == 4 && !rundy[i].DobraRunda(2))
		{
			dobryZestaw = false;
			break;
		}

		if (!rundy[i].DobraRunda(1))
		{
			dobryZestaw = false;
			break;
		}
	}

	std::cout << (dobryZestaw ? "TAK" : "NIE");
	return 0;
}