#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
int m, n;
cin >> n >> m;
int *yellow = new int[n + 1];
int *blue = new int[n + 1];
int *other = new int[n + 1];
int r, l, k;
for (int i = 0; i < m; i++)
{
cin >> r >> l >> k;
if (k == 1)
{
yellow[r] = max(yellow[r], l);
}
else if (k == 2)
{
blue[r] = max(blue[r], l);
}
else
{
other[r] = max(other[r], l);
}
}
int result = 0;
int yend = 0;
int bend = 0;
int oend = 0;
for (int i = 1; i <= n; i++)
{
if (other[i] > oend)
{
oend = other[i];
}
if (yellow[i] > yend)
{
yend = yellow[i];
}
if (blue[i] > bend)
{
bend = blue[i];
}
if (i <= yend && i <= bend && i > oend)
{
result++;
}
}
cout<<result<<endl;
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 | #include <iostream> #include <algorithm> #include <vector> using namespace std; int main() { int m, n; cin >> n >> m; int *yellow = new int[n + 1]; int *blue = new int[n + 1]; int *other = new int[n + 1]; int r, l, k; for (int i = 0; i < m; i++) { cin >> r >> l >> k; if (k == 1) { yellow[r] = max(yellow[r], l); } else if (k == 2) { blue[r] = max(blue[r], l); } else { other[r] = max(other[r], l); } } int result = 0; int yend = 0; int bend = 0; int oend = 0; for (int i = 1; i <= n; i++) { if (other[i] > oend) { oend = other[i]; } if (yellow[i] > yend) { yend = yellow[i]; } if (blue[i] > bend) { bend = blue[i]; } if (i <= yend && i <= bend && i > oend) { result++; } } cout<<result<<endl; return 0; } |
English