#include <bits/stdc++.h> #define IOSTREAM_BOOST true using namespace std; template <typename T> ostream &operator<<(ostream &os, const vector<T> &vec) { os << "{"; if (!vec.empty()) os << vec[0]; for (int i = 1; i < vec.size(); i++) os << ", " << vec[i]; os << "}"; return os; } int n, m; struct Event{ int time; int color; int delta; }; vector<Event> events; vector<Event>::iterator it; int state[3]; int main() { #if IOSTREAM_BOOST ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); #endif cin >> n >> m; events.resize(m); for(int i = 0; i < m; i++){ int a, b, c; cin >> a >> b >> c; a--, c--; events.push_back(Event({a, c, 1})); events.push_back(Event({b, c, -1})); } sort(events.begin(), events.end(), [](Event &a, Event &b){ return a.time < b.time; }); it = events.begin(); int counter = 0; for(int i = 0; i < n; i++){ while(it != events.end() && it->time == i) state[it->color] += it->delta, it++; //cout << i << " " << state[0] << " " << state[1] << " " << state[2] << "\n"; if(state[0] && state[1] && !state[2]) counter++; } cout << counter << "\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 58 59 60 61 62 | #include <bits/stdc++.h> #define IOSTREAM_BOOST true using namespace std; template <typename T> ostream &operator<<(ostream &os, const vector<T> &vec) { os << "{"; if (!vec.empty()) os << vec[0]; for (int i = 1; i < vec.size(); i++) os << ", " << vec[i]; os << "}"; return os; } int n, m; struct Event{ int time; int color; int delta; }; vector<Event> events; vector<Event>::iterator it; int state[3]; int main() { #if IOSTREAM_BOOST ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); #endif cin >> n >> m; events.resize(m); for(int i = 0; i < m; i++){ int a, b, c; cin >> a >> b >> c; a--, c--; events.push_back(Event({a, c, 1})); events.push_back(Event({b, c, -1})); } sort(events.begin(), events.end(), [](Event &a, Event &b){ return a.time < b.time; }); it = events.begin(); int counter = 0; for(int i = 0; i < n; i++){ while(it != events.end() && it->time == i) state[it->color] += it->delta, it++; //cout << i << " " << state[0] << " " << state[1] << " " << state[2] << "\n"; if(state[0] && state[1] && !state[2]) counter++; } cout << counter << "\n"; return 0; } |