#include <iostream>
#include <vector>
#include <string>
using namespace std;
bool wyliczanka(int start, vector<int> zbior)
{
if (zbior.size() < 2) return false;
if (zbior[start] > 0)
zbior[start] -= 1;
else return false;
if (start == 0)
{
//cout << "if";
if (wyliczanka(start + 1, zbior))
return true;
}
else if (start == zbior.size() - 1)
{
// cout << "else if";
if (wyliczanka(start - 1, zbior))
return true;
}
else
{
//cout << "else";
if (wyliczanka(start - 1, zbior) || wyliczanka(start + 1, zbior))
return true;
}
for (int i = 0; i < zbior.size(); i++)
{
if (zbior[i] > 0)
return false;
}
return true;
}
int main()
{
int t;
vector<vector<int>> il_razy_zabawki;
cin >> t;
for (int i = 0; i < t; i++)
{
int n;
cin >> n;
cin.ignore();
string linia;
getline(cin, linia);
il_razy_zabawki.push_back({});
string liczba;
for (char znak : linia)
{
if (znak != ' ')
liczba += znak;
else {
il_razy_zabawki[i].push_back(stoi(liczba));
liczba = "";
}
}
il_razy_zabawki[i].push_back(stoi(liczba));
}
// DEBUGOWANIE wektora
//for (int i = 0; i < il_razy_zabawki.size(); i++)
//{
// for (int j = 0; j < il_razy_zabawki[i].size(); j++)
// cout << il_razy_zabawki[i][j] << " ";
// cout << "\n";
//}
for (int i = 0; i < il_razy_zabawki.size(); i++)
{
bool flaga = 0;
for (int j = 0; j < il_razy_zabawki[i].size(); j++)
{
bool wynik = wyliczanka(j, il_razy_zabawki[i]);
if (wynik) {
cout << "TAK" << endl;
flaga = 1;
break;
}
}
if (!flaga) cout << "NIE" << endl;
}
}
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 98 99 100 101 | #include <iostream> #include <vector> #include <string> using namespace std; bool wyliczanka(int start, vector<int> zbior) { if (zbior.size() < 2) return false; if (zbior[start] > 0) zbior[start] -= 1; else return false; if (start == 0) { //cout << "if"; if (wyliczanka(start + 1, zbior)) return true; } else if (start == zbior.size() - 1) { // cout << "else if"; if (wyliczanka(start - 1, zbior)) return true; } else { //cout << "else"; if (wyliczanka(start - 1, zbior) || wyliczanka(start + 1, zbior)) return true; } for (int i = 0; i < zbior.size(); i++) { if (zbior[i] > 0) return false; } return true; } int main() { int t; vector<vector<int>> il_razy_zabawki; cin >> t; for (int i = 0; i < t; i++) { int n; cin >> n; cin.ignore(); string linia; getline(cin, linia); il_razy_zabawki.push_back({}); string liczba; for (char znak : linia) { if (znak != ' ') liczba += znak; else { il_razy_zabawki[i].push_back(stoi(liczba)); liczba = ""; } } il_razy_zabawki[i].push_back(stoi(liczba)); } // DEBUGOWANIE wektora //for (int i = 0; i < il_razy_zabawki.size(); i++) //{ // for (int j = 0; j < il_razy_zabawki[i].size(); j++) // cout << il_razy_zabawki[i][j] << " "; // cout << "\n"; //} for (int i = 0; i < il_razy_zabawki.size(); i++) { bool flaga = 0; for (int j = 0; j < il_razy_zabawki[i].size(); j++) { bool wynik = wyliczanka(j, il_razy_zabawki[i]); if (wynik) { cout << "TAK" << endl; flaga = 1; break; } } if (!flaga) cout << "NIE" << endl; } } |
English