#include <iostream> #include <array> #include <vector> #include <algorithm> using namespace std; enum color : uint8_t { white = 0b0000, yellow = 0b0001, blue = 0b0010, red = 0b0100, green = 0b0011, orange = 0b0101, violet = 0b0110, brown = 0b0111, }; inline void addPaint(vector<uint8_t> &cans, int from, int to, int paint) { static const array<uint8_t, 3> paintColorMap = {yellow, blue, red}; // Use 0 based index --from; --to; --paint; for (size_t i = from; i <= to; i++) { cans[i] |= paintColorMap[paint]; } } int main(int argc, char const *argv[]) { ios_base::sync_with_stdio(false); size_t paintCansCount; cin >> paintCansCount; vector<uint8_t> paintCans(paintCansCount, white); int operationsCount; cin >> operationsCount; while (operationsCount--) { int from, to, paint; cin >> from >> to >> paint; addPaint(paintCans, from, to, paint); } cout << count(paintCans.cbegin(), paintCans.cend(), green) << '\n'; 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 | #include <iostream> #include <array> #include <vector> #include <algorithm> using namespace std; enum color : uint8_t { white = 0b0000, yellow = 0b0001, blue = 0b0010, red = 0b0100, green = 0b0011, orange = 0b0101, violet = 0b0110, brown = 0b0111, }; inline void addPaint(vector<uint8_t> &cans, int from, int to, int paint) { static const array<uint8_t, 3> paintColorMap = {yellow, blue, red}; // Use 0 based index --from; --to; --paint; for (size_t i = from; i <= to; i++) { cans[i] |= paintColorMap[paint]; } } int main(int argc, char const *argv[]) { ios_base::sync_with_stdio(false); size_t paintCansCount; cin >> paintCansCount; vector<uint8_t> paintCans(paintCansCount, white); int operationsCount; cin >> operationsCount; while (operationsCount--) { int from, to, paint; cin >> from >> to >> paint; addPaint(paintCans, from, to, paint); } cout << count(paintCans.cbegin(), paintCans.cend(), green) << '\n'; return 0; } |