#include <iostream> #include <vector> #include <algorithm> struct Puszka { std::vector<int> barwniki; //0 bialy //1 zolty //2 niebieski //3 czerwony //4 zielony //5 pomaranczowy //6 fioletowy //7 brazowy void DolejBarwnik(int barwnik) { if (std::find(barwniki.begin(), barwniki.end(), barwnik) == barwniki.end()) //jak nie ma kororu barwniki.push_back(barwnik); } int Kolor() { std::sort(barwniki.begin(), barwniki.end()); if (barwniki.size() == 1) return barwniki[0]; if (barwniki.size() == 2) { if (barwniki[0] == 1) //zolty { if (barwniki[1] == 2) // niebieski return 4; //zielony return 3; //czerwony } return 6; //fioletowy } if (barwniki.size() == 3) return 7; // brazowy return 0; //bialy } }; int main() { int ilPuszek, lOperacji; std::cin >> ilPuszek >> lOperacji; std::vector<Puszka*> puszki; while (ilPuszek--) puszki.push_back(new Puszka()); while (lOperacji--) { int lewo, prawo, barwnik; std::cin >> lewo >> prawo >> barwnik; std::vector<Puszka*> zakres(puszki.begin() + lewo, puszki.begin() + prawo + 1); for (auto puszunia : zakres) puszunia->DolejBarwnik(barwnik); } int ileZielonych = 0; for (auto puszunia : puszki) if (puszunia->Kolor() == 4) ileZielonych++; std::cout << ileZielonych; 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 | #include <iostream> #include <vector> #include <algorithm> struct Puszka { std::vector<int> barwniki; //0 bialy //1 zolty //2 niebieski //3 czerwony //4 zielony //5 pomaranczowy //6 fioletowy //7 brazowy void DolejBarwnik(int barwnik) { if (std::find(barwniki.begin(), barwniki.end(), barwnik) == barwniki.end()) //jak nie ma kororu barwniki.push_back(barwnik); } int Kolor() { std::sort(barwniki.begin(), barwniki.end()); if (barwniki.size() == 1) return barwniki[0]; if (barwniki.size() == 2) { if (barwniki[0] == 1) //zolty { if (barwniki[1] == 2) // niebieski return 4; //zielony return 3; //czerwony } return 6; //fioletowy } if (barwniki.size() == 3) return 7; // brazowy return 0; //bialy } }; int main() { int ilPuszek, lOperacji; std::cin >> ilPuszek >> lOperacji; std::vector<Puszka*> puszki; while (ilPuszek--) puszki.push_back(new Puszka()); while (lOperacji--) { int lewo, prawo, barwnik; std::cin >> lewo >> prawo >> barwnik; std::vector<Puszka*> zakres(puszki.begin() + lewo, puszki.begin() + prawo + 1); for (auto puszunia : zakres) puszunia->DolejBarwnik(barwnik); } int ileZielonych = 0; for (auto puszunia : puszki) if (puszunia->Kolor() == 4) ileZielonych++; std::cout << ileZielonych; return 0; } |