Guest User

Horizon (old)

a guest
Jun 9th, 2015
381
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.05 KB | None | 0 0
  1. #include <algorithm>
  2. #include <cstdio>
  3. #include <iostream>
  4. #include <set>
  5. #include <vector>
  6.  
  7. #define f(i,a,b) for(int i = (a); i <= (b); i++)
  8. #define pii pair<int,int>
  9.  
  10. typedef long long ll;
  11. using namespace std;
  12.  
  13. int N;
  14. multiset<int, greater<int> > S;
  15. vector< pair< pii, int> > Events;
  16.  
  17. int main()
  18. {
  19.     cin >> N;
  20.  
  21.     f(i,1,N)
  22.     {
  23.         int l,r,h;
  24.         scanf("%d %d %d", &l, &r, &h);
  25.         Events.push_back(make_pair(make_pair(l,0),h));
  26.         Events.push_back(make_pair(make_pair(r,1),h));
  27.     }
  28.  
  29.     sort(Events.begin(), Events.end());
  30.  
  31.     int last = 0;
  32.     ll ans = 0;
  33.  
  34.     for(int i = 0; i < 2*N; i++)
  35.     {
  36.         int x = Events[i].first.first, t = Events[i].first.second, h = Events[i].second;
  37.  
  38.         if(!S.empty())
  39.         {
  40.             ll h = *S.begin();
  41.             ans += h * (x-last);
  42.         }
  43.  
  44.         if(t==0) S.insert(h);
  45.         else
  46.         {
  47.             multiset<int, greater<int> >::iterator it = S.find(h);
  48.             S.erase(it);
  49.         }
  50.  
  51.         last = x;
  52.     }
  53.  
  54.     cout << ans;
  55. }
Advertisement
Add Comment
Please, Sign In to add comment