#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<pair<ll, ll>> free;
vector<ll> minprice(302, 0x7fffffffffffffff);
ll xxx = 1;
for(pair<ll, ll> p : ver) {
free.insert(make_pair(p.first, xxx++));
for(ll i = p.first + 1; i < 302; i++) {
minprice[i] = min(minprice[i], p.second);
}
}
//for(pair<ll, ll> a : free) cout << a.first << " " << a.second << "\t";
//cout << "\n";
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) {
//cout << -p.first << " " << p.second << "\n";
if(p.second == ver[0].first) continue;
//cout << "s";
if(free.lower_bound(make_pair(p.second, 0ll)) != free.begin()) {
free.erase(--free.upper_bound(make_pair(p.second, 0ll)));
}
else {
// cout << "b\n";
ret += minprice[p.second];
}
//for(pair<ll, ll> a : free) cout << a.first << " " << a.second << "\t";
//cout << "\n";
}
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... |