제출 #210609

#제출 시각아이디문제언어결과실행 시간메모리
210609mohamedsobhi777학교 설립 (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 ; }

컴파일 시 표준 에러 (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...