제출 #90931

#제출 시각아이디문제언어결과실행 시간메모리
90931kylych03학교 설립 (IZhO13_school)C++14
100 / 100
380 ms27352 KiB
#include <bits/stdc++.h>
#define int long long
#define sc second
#define fr first
#define mp make_pair

using namespace std;
pair <int, pair<int, int> > ar[300001];
int pr[300002], sf[300002];
multiset < pair <int,int> > st1, st2;
main()
{
	int n,a,b;
	cin>>n>>a>>b;
	
	for(int i=0;i<n;i++){
		cin>>ar[i].sc.fr>>ar[i].sc.sc;
		ar[i].fr=ar[i].sc.sc - ar[i].sc.fr;
	}
	
	sort(ar,ar+n);
	int sum=0;
	for(int i=0;i<n;i++){
		if(i<a){
			sum+=ar[i].sc.fr;
			pr[i]=sum;
			st1.insert(mp(ar[i].sc.fr, i ) );
		}
		else{
			sum+=ar[i].sc.fr;
			st1.insert(mp(ar[i].sc.fr, i ) );
			sum-=(st1.begin()->first);
			pr[i]=sum;
			st1.erase(*st1.begin());
			
		}
	}
	sum=0;
	for(int i=n-1;i>=0;i--){
		if(n-b <= i){
			sum+=ar[i].sc.sc;
			sf[i]=sum;
			st2.insert(mp(ar[i].sc.sc,i));
		}
		else{
			sum+=ar[i].sc.sc;
			st2.insert(mp(ar[i].sc.sc,i));
			sum-=(st2.begin()->first);
			sf[i]=sum;
			st2.erase(*st2.begin());
		}
	}
	int mx=0;
	for(int i= max(0LL,a-1);i<n-b;i++)
		mx=max(pr[i] + sf[i+1],mx);
	if(a==0)
		mx=max(sf[0],mx);
	
	cout<<mx<<endl;	
}

컴파일 시 표준 에러 (stderr) 메시지

school.cpp:11:6: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
 main()
      ^
#Verdict Execution timeMemoryGrader output
Fetching results...