#include <iostream>
using namespace std;
int main() {
const int zielony = 3;
int n, m;
// wskaznik na tablice intow ktora pozniej zrobimy
int * puszki;
cin >> n >> m;
// tworzymy liste puszek o dlugosci n
puszki = new int[n];
for (int operacja = 0; operacja < m; operacja++){
int start, stop, kolor;
cin >> start >> stop >> kolor;
for (int aktualna_puszka = start-1; aktualna_puszka < stop; aktualna_puszka++){
// tutaj zastosujemy OR binarny
// 100 binarnie to 1, 010 -> 2, 001 -> 4
// kolor zolty = 1, przesuniecie 1ki o 0 miejsc -> wartosc 1
// kolor niebieski = 2, przesuniecie 1ki o 1 miejsce -> wartosc 2
// kolor czerwony = 3, przesuniecie 1ki o 2 miejsca -> wartosc 4
puszki[aktualna_puszka] |= (1<<(kolor-1));
}
}
int ile_zielonych = 0;
for (int puszka = 0; puszka < n; puszka++){
if(puszki[puszka] == zielony){
ile_zielonych++;
}
}
cout << ile_zielonych << endl;
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 | #include <iostream> using namespace std; int main() { const int zielony = 3; int n, m; // wskaznik na tablice intow ktora pozniej zrobimy int * puszki; cin >> n >> m; // tworzymy liste puszek o dlugosci n puszki = new int[n]; for (int operacja = 0; operacja < m; operacja++){ int start, stop, kolor; cin >> start >> stop >> kolor; for (int aktualna_puszka = start-1; aktualna_puszka < stop; aktualna_puszka++){ // tutaj zastosujemy OR binarny // 100 binarnie to 1, 010 -> 2, 001 -> 4 // kolor zolty = 1, przesuniecie 1ki o 0 miejsc -> wartosc 1 // kolor niebieski = 2, przesuniecie 1ki o 1 miejsce -> wartosc 2 // kolor czerwony = 3, przesuniecie 1ki o 2 miejsca -> wartosc 4 puszki[aktualna_puszka] |= (1<<(kolor-1)); } } int ile_zielonych = 0; for (int puszka = 0; puszka < n; puszka++){ if(puszki[puszka] == zielony){ ile_zielonych++; } } cout << ile_zielonych << endl; return 0; } |
English