#include <bits/stdc++.h>
using namespace std;
#define ll long long
int main() {
ll N, K;
cin >> N >> K;
if(K < 100000) return 1;
vector<pair<ll, ll>> ver(N);
for(ll i = 0; i < N; i++) {
ll a, b;
cin >> a >> b;
ver[i] = make_pair(a, b);
}
sort(ver.begin(), ver.end());
ll ret = 0;
for(ll i = 1; i < N && ver[i].first == ver[0].first; i++) {
ver[i].first++;
ret += K;
}
ll nx_free = 0;
multiset<ll> free;
vector<ll> minprice(302, 0x7fffffff);
for(pair<ll, ll> p : ver) {
for(ll i = p.first + 1; i < 302; i++) {
free.insert(i);
minprice[i] = min(minprice[i], p.second);
}
}
vector<pair<ll, ll>> v;
for(pair<ll, ll> p : ver) {
v.push_back(make_pair(-p.second, p.first));
}
sort(v.begin(), v.end());
for(pair<ll, ll> p : v) {
if(p.second == ver[0].first) continue;
if(free.upper_bound(p.second) != free.begin()) {
free.erase(--free.upper_bound(p.second));
}
else {
ret += minprice[p.second];
}
}
cout << ret;
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |