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