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