Submission #444008

#TimeUsernameProblemLanguageResultExecution timeMemory
444008JovanBSchools (IZhO13_school)C++17
100 / 100
191 ms16236 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; using ld = long double; const int MAXN = 300000; pair <int, int> a[MAXN+5]; multiset <int> vals; ll pref[MAXN+5]; ll suf[MAXN+5]; int main(){ ios_base::sync_with_stdio(false), cin.tie(0); cout.precision(10); cout << fixed; int n, m, s; cin >> n >> m >> s; for(int i=1; i<=n; i++){ cin >> a[i].first >> a[i].second; } sort(a+1, a+1+n, [](pair <int, int> x, pair <int, int> y){ return x.first - x.second > y.first - y.second; }); ll sum = 0; for(int i=1; i<=n; i++){ if(vals.size() < m){ vals.insert(a[i].first); sum += a[i].first; } else if(vals.size() && *vals.begin() < a[i].first){ sum -= *vals.begin(); vals.erase(vals.begin()); vals.insert(a[i].first); sum += a[i].first; } pref[i] = sum; } sum = 0; vals.clear(); for(int i=n; i>=1; i--){ if(vals.size() < s){ vals.insert(a[i].second); sum += a[i].second; } else if(vals.size() && *vals.begin() < a[i].second){ sum -= *vals.begin(); vals.erase(vals.begin()); vals.insert(a[i].second); sum += a[i].second; } suf[i] = sum; } ll res = 0; for(int i=1; i<=n; i++) res = max(res, pref[i] + suf[i+1]); cout << res << "\n"; return 0; }

Compilation message (stderr)

school.cpp: In function 'int main()':
school.cpp:29:24: warning: comparison of integer expressions of different signedness: 'std::multiset<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   29 |         if(vals.size() < m){
      |            ~~~~~~~~~~~~^~~
school.cpp:44:24: warning: comparison of integer expressions of different signedness: 'std::multiset<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   44 |         if(vals.size() < s){
      |            ~~~~~~~~~~~~^~~
#Verdict Execution timeMemoryGrader output
Fetching results...