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