#include <iostream>
#include <set>
using namespace std;
int n, m, l, r, c;
set<int> yellow, blue, white, green;
int main() {
ios::sync_with_stdio(false); cin.tie(nullptr);
cin >> n >> m;
for (int i = 1; i <= n; i++) white.insert(i);
for (int i = 0; i < m; i++) {
cin >> l >> r >> c;
if (c == 1) { // yellow
yellow.insert(white.lower_bound(l), white.upper_bound(r));
white.erase(white.lower_bound(l), white.upper_bound(r));
green.insert(blue.lower_bound(l), blue.upper_bound(r));
blue.erase(blue.lower_bound(l), blue.upper_bound(r));
} else if (c == 2) { // blue
blue.insert(white.lower_bound(l), white.upper_bound(r));
white.erase(white.lower_bound(l), white.upper_bound(r));
green.insert(yellow.lower_bound(l), yellow.upper_bound(r));
yellow.erase(yellow.lower_bound(l), yellow.upper_bound(r));
} else { // red
white.erase(white.lower_bound(l), white.upper_bound(r));
yellow.erase(yellow.lower_bound(l), yellow.upper_bound(r));
blue.erase(blue.lower_bound(l), blue.upper_bound(r));
green.erase(green.lower_bound(l), green.upper_bound(r));
}
}
cout << green.size() << '\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 | #include <iostream> #include <set> using namespace std; int n, m, l, r, c; set<int> yellow, blue, white, green; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); cin >> n >> m; for (int i = 1; i <= n; i++) white.insert(i); for (int i = 0; i < m; i++) { cin >> l >> r >> c; if (c == 1) { // yellow yellow.insert(white.lower_bound(l), white.upper_bound(r)); white.erase(white.lower_bound(l), white.upper_bound(r)); green.insert(blue.lower_bound(l), blue.upper_bound(r)); blue.erase(blue.lower_bound(l), blue.upper_bound(r)); } else if (c == 2) { // blue blue.insert(white.lower_bound(l), white.upper_bound(r)); white.erase(white.lower_bound(l), white.upper_bound(r)); green.insert(yellow.lower_bound(l), yellow.upper_bound(r)); yellow.erase(yellow.lower_bound(l), yellow.upper_bound(r)); } else { // red white.erase(white.lower_bound(l), white.upper_bound(r)); yellow.erase(yellow.lower_bound(l), yellow.upper_bound(r)); blue.erase(blue.lower_bound(l), blue.upper_bound(r)); green.erase(green.lower_bound(l), green.upper_bound(r)); } } cout << green.size() << '\n'; return 0; } |
English