Submission #210609

#TimeUsernameProblemLanguageResultExecution timeMemory
210609mohamedsobhi777Schools (IZhO13_school)C++14
100 / 100
326 ms16476 KiB
#include <bits/stdc++.h> 


using namespace std ;
const int N = 3e5 +5 ; 

int n , M , S; 
vector<pair<int , int > > v; 
long long m[N] , s[N] ; 
long long pre[N] , suf[N] ;
long long sum  , sol; 

int main(){
    cin>>n>>M>>S; 
    for(int i = 0 ; i < n ; i++){
        cin>>m[i]>>s[i] ; 
        v.push_back({s[i]-m[i] , i}) ;
    }    
    sort(v.begin() , v.end());
    priority_queue<int , vector<int> , greater<int>  > q ; 
    for(int i = 0 ; i <n ; i++){
        if(q.size()< M){
            sum+=m[v[i].second] ;
            q.push(m[v[i].second]);
        }else if( q.top() < m[v[i].second] ){
            sum+= m[v[i].second] - q.top(); 
            q.pop();
            q.push(m[v[i].second]);            
        }
        pre[i] = sum ; 
    }
    while(q.size() )q.pop() ; sum = 0;
    for(int i = n-1 ; i>= 0 ; i--){
        if(q.size() < S ) {
            sum+=s[v[i].second] ; 
            q.push(s[v[i].second]) ; 
        }
        else if(q.top() < s[v[i].second]) {
            sum+=s[v[i].second] - q.top() ; 
            q.pop() ; 
            q.push(s[v[i].second]) ; 
        }
        suf[i] = sum; 
    }
    sol = suf[0] ; 
    for(int i = 0 ; i <n ; i++){
        sol = max(sol , pre[i] + suf[i+1]) ; 
    }
    cout<<sol;
    return 0 ; 
}

Compilation message (stderr)

school.cpp: In function 'int main()':
school.cpp:22:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         if(q.size()< M){
            ~~~~~~~~^~~
school.cpp:32:5: warning: this 'while' clause does not guard... [-Wmisleading-indentation]
     while(q.size() )q.pop() ; sum = 0;
     ^~~~~
school.cpp:32:31: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'while'
     while(q.size() )q.pop() ; sum = 0;
                               ^~~
school.cpp:34:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         if(q.size() < S ) {
            ~~~~~~~~~^~~
#Verdict Execution timeMemoryGrader output
Fetching results...