Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <algorithm>
- #include <map>
- #define en '\n'
- #define bg(x) begin(x)
- #define all(x) bg(x), end(x)
- #define fin(x) for (auto &it : x) cin >> it
- #define fout(x) for (auto &it : x) cout << it << ' '; cout << en
- using namespace std;
- using ll = long long;
- using i32 = int32_t;
- template<typename T>
- using V = vector<T>;
- using vi = V<int>;
- using vvi = V<vi>;
- void solve() {
- int n; cin >> n;
- vvi v(n, vi(3));
- for (size_t i = 0; i < n; i++)
- {
- fin(v[i]);
- }
- sort(all(v), [](vi a, vi b) {
- return a[2] > b[2];
- });
- ll ans = 0;
- map<int, int> cords;
- for (size_t i = 0; i < n; i++)
- {
- int left = v[i][0];
- int right = v[i][1];
- if (cords.size() == 0) {
- cords[left] = right;
- continue;
- }
- auto it = cords.upper_bound(left);
- bool canAdd = true;
- if (it != cords.end()) {
- if (right > (*it).first) {
- canAdd = false;
- }
- }
- if (it != cords.begin()) {
- it--;
- if (left < (*it).second) {
- canAdd = false;
- }
- }
- if (!canAdd) ans += v[i][2];
- else {
- cords[left] = right;
- }
- // fout(v[i]);
- }
- cout << ans;
- }
- i32 main()
- {
- ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);
- solve();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement