제출 #90761

#제출 시각아이디문제언어결과실행 시간메모리
90761YottaByteSchools (IZhO13_school)C++14
15 / 100
2055 ms35800 KiB
#include <iostream>
#include <queue>

using namespace std;

#define pb push_back
#define mk make_pair
#define fr first
#define sc second
#define ll long long
#define int long long
#define pii pair < int, int >

const int N = 3e5 + 1;

priority_queue < pair < int, pii > > v;
priority_queue < pair < int, pii > > vm;
priority_queue < pair < int, pii >, vector < pair < int, pii > >, greater < pair < int, pii > > > pq;
ll ans;
int u[N], um[N], us[N], ii;

int maxim()
{
	int id = vm.top().sc.sc;
	int res = vm.top().fr;
	if(!vm.size())
	{
		return -1e11;
	}
	while(u[id] && vm.size())
	{
		vm.pop();
		id = vm.top().sc.sc;
		res = vm.top().fr;
	}
	
	ii = id;
	return res;
}

int maxs(priority_queue < pair < int, pii > > temp)
{
	int id = temp.top().sc.sc;
	int res = temp.top().fr;

	if(!temp.size())
	{
		return 1e11;
	}
	
	while(u[id] && temp.size())
	{
		temp.pop();
		id = temp.top().sc.sc;
		res = temp.top().fr;
	}
	
	return res;
}

main()
{
	int n, m, s;
	cin >> n >> m >> s;
	for(int i = 1; i <= n; i++)
	{
		int a, b;
		cin >> a >> b;
		v.push( { b, {a, i} } );
		vm.push( { a, {b, i} } );
		pq.push( { a, {b, i} } );
	}
	
	int cnt = n - m - s;
	
	while(m--)
	{
		int mx = vm.top().fr;
		int id = vm.top().sc.sc;
		us[id] = vm.top().sc.fr;
		vm.pop();
		
		u[id] = 1;
		um[id] = mx;
		
		ans += mx;
	}
	
	while(s)
	{
		int mx = v.top().fr;
		int id = v.top().sc.sc;
		v.pop();
		
		if(um[id])
		{
			int mxm = maxim();
			int tmp = ans + us[id] - um[id] + mxm;
			
			mx = maxs(v);
			if(ans + mx < tmp)
			{
				ans = tmp;
				s--;
				u[ii] = 1;
				um[ii] = mxm;
				us[ii] = mx;
				if(vm.size())
					vm.pop();
			}
		}
		else
		{
			u[id] = 1;
			ans += mx;
			s--;
		}
	}
	
	cout << ans << endl;
}
/*
3 1 1
5 2
4 1
6 4

7 2 3
9 8
10 6
3 5
1 7
5 7
6 3
5 4

4 1 1
6 16
2 14
4 5
15 19
*/

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

school.cpp:61:6: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
 main()
      ^
school.cpp: In function 'int main()':
school.cpp:74:6: warning: unused variable 'cnt' [-Wunused-variable]
  int cnt = n - m - s;
      ^~~
#Verdict Execution timeMemoryGrader output
Fetching results...