#include <iostream>
#include <vector>
#include <array>
// #include <limits>
using namespace std;
// using uint = unsigned int;
int main()
{
std::ios_base::sync_with_stdio(false);
std::cin.tie(nullptr);
std::cout.tie(nullptr);
int n, m;
cin >> n >> m;
// vector<uint> cans(n+1+1, 0);
vector<array<int, 3>> colorPrefix(n+1+1, {0, 0, 0});
while (m--)
{
int l, r, k;
cin >> l >> r >> k;
--k;
colorPrefix[l][k]+=1;
colorPrefix[r+1][k]-=1;
}
int greensCount = 0;
// int maxUint = std::numeric_limits<uint>::max();
// uint curCan = 0;
array<int, 3> cur {0, 0, 0};
for (int i = 1; i <= n; ++i)
{
cur[0] += colorPrefix[i][0];
cur[1] += colorPrefix[i][1];
cur[2] += colorPrefix[i][2];
// if (colorPrefix[i][0] == 1)
// curCan |= 1<<0;
// if (colorPrefix[i][1] == 1)
// curCan |= 1<<1;
// if (colorPrefix[i][2] == 1)
// curCan |= 1<<2;
// if (colorPrefix[i][0] == -1)
// curCan &= maxUint^(1<<0);
// if (colorPrefix[i][1] == -1)
// curCan &= maxUint^(1<<1);
// if (colorPrefix[i][2] == -1)
// curCan &= maxUint^(1<<2);
// // cans[i] = curCan;
// if (curCan == 0x3)
// greensCount++;
if (cur[0]>=1 && cur[1]>=1 && cur[2]<=0)
greensCount++;
}
cout << greensCount << '\n';
}
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 63 64 65 66 67 68 | #include <iostream> #include <vector> #include <array> // #include <limits> using namespace std; // using uint = unsigned int; int main() { std::ios_base::sync_with_stdio(false); std::cin.tie(nullptr); std::cout.tie(nullptr); int n, m; cin >> n >> m; // vector<uint> cans(n+1+1, 0); vector<array<int, 3>> colorPrefix(n+1+1, {0, 0, 0}); while (m--) { int l, r, k; cin >> l >> r >> k; --k; colorPrefix[l][k]+=1; colorPrefix[r+1][k]-=1; } int greensCount = 0; // int maxUint = std::numeric_limits<uint>::max(); // uint curCan = 0; array<int, 3> cur {0, 0, 0}; for (int i = 1; i <= n; ++i) { cur[0] += colorPrefix[i][0]; cur[1] += colorPrefix[i][1]; cur[2] += colorPrefix[i][2]; // if (colorPrefix[i][0] == 1) // curCan |= 1<<0; // if (colorPrefix[i][1] == 1) // curCan |= 1<<1; // if (colorPrefix[i][2] == 1) // curCan |= 1<<2; // if (colorPrefix[i][0] == -1) // curCan &= maxUint^(1<<0); // if (colorPrefix[i][1] == -1) // curCan &= maxUint^(1<<1); // if (colorPrefix[i][2] == -1) // curCan &= maxUint^(1<<2); // // cans[i] = curCan; // if (curCan == 0x3) // greensCount++; if (cur[0]>=1 && cur[1]>=1 && cur[2]<=0) greensCount++; } cout << greensCount << '\n'; } |
English