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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#include <iostream>

using namespace std;

int main()
{
	unsigned int t_dni, n_zabawek, a_i_wystapien;
	cin >> t_dni;
	unsigned int* TabLiczbyZabawek = new unsigned int[t_dni];
	unsigned int** TabWystopienZabawek = new unsigned int* [t_dni];
	for (unsigned int nr_dnia = 0; nr_dnia < t_dni; nr_dnia++) {
		cin >> n_zabawek;
		TabLiczbyZabawek[nr_dnia] = n_zabawek;
		TabWystopienZabawek[nr_dnia] = new unsigned int[n_zabawek];
		for (unsigned int nr_zabawki = 0; nr_zabawki < n_zabawek; nr_zabawki++) {
			cin >> a_i_wystapien;
			TabWystopienZabawek[nr_dnia][nr_zabawki] = a_i_wystapien;
		}
	}
	unsigned int start, koniec;
	bool sprawdzanie;
	for (unsigned int nr_dnia = 0; nr_dnia < t_dni; nr_dnia++) {
		start = 0;
		koniec = TabLiczbyZabawek[nr_dnia];

		while (TabWystopienZabawek[nr_dnia][start] == 0 && start < koniec) {
			start++;
		}
		while (TabWystopienZabawek[nr_dnia][koniec - 1] == 0 && koniec > start) {
			koniec--;
		}
		bool wszystkie_te_same = true;
		unsigned int wszystkie_zabawki = TabWystopienZabawek[nr_dnia][start];
		for (unsigned int nr_zabawki = start; nr_zabawki < koniec; nr_zabawki++) {
			if (TabWystopienZabawek[nr_dnia][nr_zabawki] != wszystkie_zabawki) {
				wszystkie_te_same = false;
				break;
			}
		}
		if (wszystkie_te_same) {
			if (wszystkie_zabawki == 1) {
				cout << "TAK" << endl;
			}
			else {
				cout << "NIE" << endl;
			}
			continue;
		}

		sprawdzanie = true;
		do {
			while (TabWystopienZabawek[nr_dnia][start] == 0 && start<koniec) {
				start++;
			}
			while (TabWystopienZabawek[nr_dnia][koniec - 1] == 0 && koniec>start) {
				koniec--;
			}

			switch (koniec-start) {
			case 0:
				cout << "NIE" << endl;
				break;
			case 1:
				if (TabWystopienZabawek[nr_dnia][start] == 1 || (TabWystopienZabawek[nr_dnia][start] == 2 && TabLiczbyZabawek[nr_dnia]>2)) {
					cout << "TAK" << endl;
				}
				else {
					cout << "NIE" << endl;
				}
				break;
			case 2:
				if (TabWystopienZabawek[nr_dnia][start] == TabWystopienZabawek[nr_dnia][koniec-1] || TabWystopienZabawek[nr_dnia][start] + 1 == TabWystopienZabawek[nr_dnia][koniec-1] || TabWystopienZabawek[nr_dnia][start] == TabWystopienZabawek[nr_dnia][koniec-1] + 1) {
					cout << "TAK" << endl;
				}
				else {
					cout << "NIE" << endl;
				}
				break;
			default:
				for (unsigned int nr_zabawki = start; nr_zabawki < koniec; nr_zabawki++) {
					if (TabWystopienZabawek[nr_dnia][nr_zabawki] == 0) {
						sprawdzanie = false;
						cout << "NIE" << endl;
						break;
					}
					TabWystopienZabawek[nr_dnia][nr_zabawki]--;
				}
				break;
			}
		} while (koniec - start > 2 && sprawdzanie);
		delete[] TabWystopienZabawek[nr_dnia];
	}
	delete[] TabLiczbyZabawek;
	delete[] TabWystopienZabawek;

	return 0;
}