답안 #672127

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
672127 2022-12-14T19:36:41 Z infertechno2 학교 설립 (IZhO13_school) C++14
100 / 100
107 ms 11336 KB
#include <bits/stdc++.h>
 
using namespace std;
 
typedef long long ll;
 
const ll Size=3e5+10;
pair<ll,ll> a[Size];
ll ansm[Size],anss[Size];
 
bool comp(const pair<ll,ll>& A,const pair<ll,ll>& B){
    return (A.first-A.second)<(B.first-B.second);
}
 
void solve(){
    ll n,m,s;
    cin>>n>>m>>s;
    for(ll i=1;i<=n;i++){
        cin>>a[i].first>>a[i].second;
    }
    sort(a+1,a+n+1,comp);
    priority_queue<ll,vector<ll>,greater<ll>> to_remove;
    ll ans_for_s=0;
    for(ll i=1;i<=n;i++){
        to_remove.push(a[i].second);
        ans_for_s+=a[i].second;
        if(to_remove.size()>s){
            ans_for_s-=to_remove.top();
            to_remove.pop();
        }
        anss[i]=ans_for_s;
    }
    while(!to_remove.empty()){
        to_remove.pop();
    }
    ll ans_for_m=0;
    for(ll i=n;i>0;i--){
        to_remove.push(a[i].first);
        ans_for_m+=a[i].first;
        if(to_remove.size()>m){
            ans_for_m-=to_remove.top();
            to_remove.pop();
        }
        ansm[i]=ans_for_m;
    }
    long long ans=0;
    for(ll i=0;i<=n;i++){
        ans=max(ans,anss[i]+ansm[i+1]);
    }
    cout<<ans<<endl;
}
 
int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    ll t=1;
    while(t--){
        solve();
    }
    return 0;
}

Compilation message

school.cpp: In function 'void solve()':
school.cpp:27:28: warning: comparison of integer expressions of different signedness: 'std::priority_queue<long long int, std::vector<long long int>, std::greater<long long int> >::size_type' {aka 'long unsigned int'} and 'll' {aka 'long long int'} [-Wsign-compare]
   27 |         if(to_remove.size()>s){
      |            ~~~~~~~~~~~~~~~~^~
school.cpp:40:28: warning: comparison of integer expressions of different signedness: 'std::priority_queue<long long int, std::vector<long long int>, std::greater<long long int> >::size_type' {aka 'long unsigned int'} and 'll' {aka 'long long int'} [-Wsign-compare]
   40 |         if(to_remove.size()>m){
      |            ~~~~~~~~~~~~~~~~^~
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 340 KB Output is correct
2 Correct 1 ms 340 KB Output is correct
3 Correct 0 ms 340 KB Output is correct
4 Correct 0 ms 340 KB Output is correct
5 Correct 1 ms 324 KB Output is correct
6 Correct 0 ms 340 KB Output is correct
7 Correct 2 ms 468 KB Output is correct
8 Correct 2 ms 596 KB Output is correct
9 Correct 2 ms 596 KB Output is correct
10 Correct 2 ms 588 KB Output is correct
11 Correct 2 ms 596 KB Output is correct
12 Correct 2 ms 596 KB Output is correct
13 Correct 13 ms 2196 KB Output is correct
14 Correct 29 ms 3604 KB Output is correct
15 Correct 49 ms 5996 KB Output is correct
16 Correct 75 ms 7844 KB Output is correct
17 Correct 80 ms 8776 KB Output is correct
18 Correct 86 ms 9288 KB Output is correct
19 Correct 93 ms 9912 KB Output is correct
20 Correct 107 ms 11336 KB Output is correct