#include <bits/stdc++.h>
#define ll long long
using namespace std;
multiset < pair < ll, ll > > x;
vector < pair < ll, ll > > v;
multiset < pair < ll, ll > > st;
ll n, m, s, ans;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
ll n, m, s;
cin >> n >> m >> s;
for (ll k=1; k<=n; k++) {
ll z, y;
cin >> z >> y;
v.push_back({z,y});
}
sort(v.begin(),v.end());
reverse(v.begin(),v.end());
for (ll k=0; k<m; k++)
ans+=v[k].first;
for (ll k=m; k<n; k++) {
st.insert({v[k].second,v[k].first});
}
while (st.size()>s) {
st.erase(st.begin());
}
set < pair < ll, ll > > ::iterator st_it;
for (st_it=st.begin(); st_it!=st.end(); st_it++)
ans+=(*st_it).first;
set < pair < ll, ll > > st1;
while (!st.empty()) {
st1.insert({-(*st.begin()).first,(*st.begin()).second});
st.erase(st.begin());
}
for (ll k=1; k<=m; k++) {
set < pair <ll, ll > > ::iterator st_it;
for (st_it=st1.begin(); st_it!=st1.end(); st_it++) {
if (ans-v[k].first+v[k].second<ans+(*st_it).first+(*st_it).second) {
ans+=((*st_it).first+(*st_it).second);
ans-=(v[k].first-v[k].second);
st1.erase(st_it);
st1.insert({v[k].second,v[k].first});
break;
}
}
}
cout << ans;
return 0;
}
Compilation message
expgorl.cpp: In function 'int main()':
expgorl.cpp:35:24: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
while (st.size()>s) {
~~~~~~~~~^~
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
9 ms |
2036 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |