Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #define ll long long
- #define _test int _TEST; cin>>_TEST; while(_TEST--)
- #define ff first
- #define ss second
- #define pb push_back
- int main()
- {
- int n, m;
- cin>>n>>m;
- vector<ll int> p(n), l(m), d(m);
- for(auto &e: p) cin>>e;
- for(auto &e: l) cin>>e;
- for(auto &e: d) cin>>e;
- multiset<pair<int, int>> dis;
- for(int i=0; i<m; i++)
- dis.insert({l[i], d[i]});
- sort(p.begin(), p.end());
- ll int ans = 0;
- multiset<ll int> disAvail;
- for(auto e: p)
- {
- while(dis.size() && (*dis.begin()).ff <= e)
- {
- disAvail.insert((*dis.begin()).ss);
- dis.erase(dis.begin());
- }
- if(!disAvail.size())
- ans += e;
- else
- {
- ans += e - *disAvail.rbegin();
- disAvail.erase(--disAvail.end());
- }
- }
- cout<<ans<<"\n";
- }
Advertisement
Add Comment
Please, Sign In to add comment