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