#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; } |
English