#include <bits/stdc++.h> using namespace std; int n, m, a, b, c, z, it1, it2, it3; vector< pair<int, int> > tab[3]; int main() { scanf("%d%d", &n, &m); for(int i=0; i^m; ++i) { scanf("%d%d%d", &a, &b, &c); tab[c-1].push_back({a, b}); } sort(tab[0].begin(), tab[0].end()); sort(tab[1].begin(), tab[1].end()); sort(tab[2].begin(), tab[2].end()); for(int i=1; i^(n+1); ++i) { int b=0; while(it1!=tab[0].size() && i>tab[0][it1].second) { it1++; } if(it1!=tab[0].size() && i>=tab[0][it1].first) { b++; } while(it2!=tab[1].size() && i>tab[1][it2].second) { it2++; } if(it2!=tab[1].size() && i>=tab[1][it2].first) { b++; } while(it3!=tab[2].size() && i>tab[2][it3].second) { it3++; } if(it3!=tab[2].size() && i>=tab[2][it3].first) { b--; } if(b==2) z++; } printf("%d", z); 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 | #include <bits/stdc++.h> using namespace std; int n, m, a, b, c, z, it1, it2, it3; vector< pair<int, int> > tab[3]; int main() { scanf("%d%d", &n, &m); for(int i=0; i^m; ++i) { scanf("%d%d%d", &a, &b, &c); tab[c-1].push_back({a, b}); } sort(tab[0].begin(), tab[0].end()); sort(tab[1].begin(), tab[1].end()); sort(tab[2].begin(), tab[2].end()); for(int i=1; i^(n+1); ++i) { int b=0; while(it1!=tab[0].size() && i>tab[0][it1].second) { it1++; } if(it1!=tab[0].size() && i>=tab[0][it1].first) { b++; } while(it2!=tab[1].size() && i>tab[1][it2].second) { it2++; } if(it2!=tab[1].size() && i>=tab[1][it2].first) { b++; } while(it3!=tab[2].size() && i>tab[2][it3].second) { it3++; } if(it3!=tab[2].size() && i>=tab[2][it3].first) { b--; } if(b==2) z++; } printf("%d", z); return 0; } |