#include <iostream> #include <vector> using namespace std; int main() { vector<int> czy_czerwony; vector<int> czy_zolty; vector<int> czy_niebieski; int kolor; int puszki, operacje, lewy, prawy; cin >> puszki >> operacje; int liczba_zielonych = 0; for (int i = 0; i < puszki; i++) { czy_czerwony.push_back(0); czy_zolty.push_back(0); czy_niebieski.push_back(0); } for (int i = 0; i < operacje; i++) { cin >> lewy >> prawy >> kolor; if (kolor == 3) { if (czy_czerwony[lewy-1] < prawy - lewy + 1) czy_czerwony[lewy-1] = prawy - lewy + 1; } else if (kolor == 1) { if (czy_zolty[lewy-1] < prawy - lewy + 1) czy_zolty[lewy-1] = prawy - lewy + 1; } else { if (czy_niebieski[lewy-1] < prawy - lewy + 1) czy_niebieski[lewy-1] = prawy - lewy + 1; } } int niebieski_gotowy = 0, zolty_gotowy = 0, czerwony_gotowy = 0; for (int i = 0; i < puszki; i++) { if (czy_czerwony[i] != 0) { if (czy_czerwony[i] > czerwony_gotowy) czerwony_gotowy = czy_czerwony[i]; } if (czy_niebieski[i] != 0) { if (czy_niebieski[i] > niebieski_gotowy) niebieski_gotowy = czy_niebieski[i]; } if (czy_zolty[i] != 0) { if (czy_zolty[i] > zolty_gotowy) zolty_gotowy = czy_zolty[i]; } if (zolty_gotowy > 0 && niebieski_gotowy > 0 && czerwony_gotowy == 0) { liczba_zielonych++; } //cout << " niebieski gotowy= " << niebieski_gotowy << " zolty_gotowy = " //<< zolty_gotowy << " czerwony gotowy= " << czerwony_gotowy << " liczba_zielonych = " << liczba_zielonych << endl; if (zolty_gotowy != 0) zolty_gotowy--; if (niebieski_gotowy != 0) niebieski_gotowy--; if (czerwony_gotowy != 0) czerwony_gotowy--; } cout << liczba_zielonych; 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 | #include <iostream> #include <vector> using namespace std; int main() { vector<int> czy_czerwony; vector<int> czy_zolty; vector<int> czy_niebieski; int kolor; int puszki, operacje, lewy, prawy; cin >> puszki >> operacje; int liczba_zielonych = 0; for (int i = 0; i < puszki; i++) { czy_czerwony.push_back(0); czy_zolty.push_back(0); czy_niebieski.push_back(0); } for (int i = 0; i < operacje; i++) { cin >> lewy >> prawy >> kolor; if (kolor == 3) { if (czy_czerwony[lewy-1] < prawy - lewy + 1) czy_czerwony[lewy-1] = prawy - lewy + 1; } else if (kolor == 1) { if (czy_zolty[lewy-1] < prawy - lewy + 1) czy_zolty[lewy-1] = prawy - lewy + 1; } else { if (czy_niebieski[lewy-1] < prawy - lewy + 1) czy_niebieski[lewy-1] = prawy - lewy + 1; } } int niebieski_gotowy = 0, zolty_gotowy = 0, czerwony_gotowy = 0; for (int i = 0; i < puszki; i++) { if (czy_czerwony[i] != 0) { if (czy_czerwony[i] > czerwony_gotowy) czerwony_gotowy = czy_czerwony[i]; } if (czy_niebieski[i] != 0) { if (czy_niebieski[i] > niebieski_gotowy) niebieski_gotowy = czy_niebieski[i]; } if (czy_zolty[i] != 0) { if (czy_zolty[i] > zolty_gotowy) zolty_gotowy = czy_zolty[i]; } if (zolty_gotowy > 0 && niebieski_gotowy > 0 && czerwony_gotowy == 0) { liczba_zielonych++; } //cout << " niebieski gotowy= " << niebieski_gotowy << " zolty_gotowy = " //<< zolty_gotowy << " czerwony gotowy= " << czerwony_gotowy << " liczba_zielonych = " << liczba_zielonych << endl; if (zolty_gotowy != 0) zolty_gotowy--; if (niebieski_gotowy != 0) niebieski_gotowy--; if (czerwony_gotowy != 0) czerwony_gotowy--; } cout << liczba_zielonych; return 0; } |