#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int n{}, m{};
cin >> n >> m;
vector<pair<int, int>> farby[3]{};
for (int i = 0; i < m; i++)
{
int l{}, r{}, k{};
cin >> l >> r >> k;
l--; r--; k--;
farby[k].push_back(make_pair(l, r));
}
sort(farby[0].begin(), farby[0].end());
sort(farby[1].begin(), farby[1].end());
sort(farby[2].begin(), farby[2].end());
bool puszki[3][1000001];
for (int i = 0; i < 3; i++)
{
int index{};
for (auto przedzial : farby[i])
{
for (int j = max(index, przedzial.first); j <= przedzial.second; j++)
{
puszki[i][j] = true;
}
index = max(index, przedzial.second + 1);
}
}
int odp{};
for (int i = 0; i < n; i++)
{
if (puszki[0][i] == true && puszki[1][i] == true && puszki[2][i] == false) odp++;
}
cout << odp;
}
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 | #include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int n{}, m{}; cin >> n >> m; vector<pair<int, int>> farby[3]{}; for (int i = 0; i < m; i++) { int l{}, r{}, k{}; cin >> l >> r >> k; l--; r--; k--; farby[k].push_back(make_pair(l, r)); } sort(farby[0].begin(), farby[0].end()); sort(farby[1].begin(), farby[1].end()); sort(farby[2].begin(), farby[2].end()); bool puszki[3][1000001]; for (int i = 0; i < 3; i++) { int index{}; for (auto przedzial : farby[i]) { for (int j = max(index, przedzial.first); j <= przedzial.second; j++) { puszki[i][j] = true; } index = max(index, przedzial.second + 1); } } int odp{}; for (int i = 0; i < n; i++) { if (puszki[0][i] == true && puszki[1][i] == true && puszki[2][i] == false) odp++; } cout << odp; } |
English