#include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int n{}, m{}; cin >> n >> m; vector<pair<int, int>> farby[3]{}; for (int i = 0; i < m; i++) { int l{}, r{}, k{}; cin >> l >> r >> k; l--; r--; k--; farby[k].push_back(make_pair(l, r)); } sort(farby[0].begin(), farby[0].end()); sort(farby[1].begin(), farby[1].end()); sort(farby[2].begin(), farby[2].end()); bool puszki[3][1000001]; for (int i = 0; i < 3; i++) { int index{}; for (auto przedzial : farby[i]) { for (int j = max(index, przedzial.first); j <= przedzial.second; j++) { puszki[i][j] = true; } index = max(index, przedzial.second + 1); } } int odp{}; for (int i = 0; i < n; i++) { if (puszki[0][i] == true && puszki[1][i] == true && puszki[2][i] == false) odp++; } cout << odp; }
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 | #include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int n{}, m{}; cin >> n >> m; vector<pair<int, int>> farby[3]{}; for (int i = 0; i < m; i++) { int l{}, r{}, k{}; cin >> l >> r >> k; l--; r--; k--; farby[k].push_back(make_pair(l, r)); } sort(farby[0].begin(), farby[0].end()); sort(farby[1].begin(), farby[1].end()); sort(farby[2].begin(), farby[2].end()); bool puszki[3][1000001]; for (int i = 0; i < 3; i++) { int index{}; for (auto przedzial : farby[i]) { for (int j = max(index, przedzial.first); j <= przedzial.second; j++) { puszki[i][j] = true; } index = max(index, przedzial.second + 1); } } int odp{}; for (int i = 0; i < n; i++) { if (puszki[0][i] == true && puszki[1][i] == true && puszki[2][i] == false) odp++; } cout << odp; } |