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