Submission #1280978

#TimeUsernameProblemLanguageResultExecution timeMemory
1280978trideserSki 2 (JOI24_ski2)C++20
0 / 100
1 ms572 KiB
#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; set<pair<ll, ll>> free; map<ll, ll> minprice; minprice[-1] = 0x7fffffffffffffff; ll xxx = 1; for(pair<ll, ll> p : ver) { free.insert(make_pair(p.first, xxx++)); if(minprice.find(p.first) == minprice.end()) minprice[p.first] = 0x7fffffffffffffff; minprice[p.first] = min(minprice[p.first], p.second); } ll mm = 0x7fffffffffffffff; for(auto it = minprice.begin(); it != minprice.end(); it++) { if(it->second > mm) { it = minprice.erase(it); } mm = min(mm, it->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) { if(p.second == ver[0].first) continue; //cout << "s"; if(free.lower_bound(make_pair(p.second, 0ll)) != free.begin()) { free.erase(--free.lower_bound(make_pair(p.second, 0ll))); } else { ret += (--minprice.lower_bound(p.second))->second; } //for(pair<ll, ll> a : free) cout << a.first << " " << a.second << "\t"; //cout << "\n"; } cout << ret; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...