# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
90723 | YottaByte | 학교 설립 (IZhO13_school) | C++14 | 269 ms | 12224 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <algorithm>
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
#define pb push_back
#define mk make_pair
#define fr first
#define sc second
#define ll long long
int n, m, s;
vector < pair < int, int > > v1, v2;
priority_queue < int > pq;
priority_queue < int > q;
ll count(vector < pair < int, int > > v, priority_queue < int > q)
{
ll res = 0;
for(int i = 0; i < m; i++)
{
res += v[i].fr;
}
for(int i = 0; i < s; i++)
{
res += q.top();
q.pop();
}
return res;
}
ll count1(vector < pair < int, int > > v, priority_queue < int > q)
{
ll res = 0;
for(int i = 0; i < m; i++)
{
res += q.top();
q.pop();
}
for(int i = 0; i < s; i++)
{
res += v[i].fr;
}
return res;
}
main()
{
cin >> n >> m >> s;
for(int i = 1; i <= n; i++)
{
int x, y;
cin >> x >> y;
v1.pb( { x, y } );
}
//puts("");
sort(v1.rbegin(), v1.rend());
for(int i = m; i < n; i++)
pq.push( v1[i].sc );
int ans1 = count(v1, pq);
for(int i = 0; i < n; i++)
swap(v1[i].fr, v1[i].sc);
//for(int i = 0; i < n; i++)
//cout << v1[i].fr << " " << v1[i].sc << endl;
//puts("");
sort(v1.rbegin(), v1.rend());
for(int i = s; i < n; i++)
q.push( v1[i].sc );//, cout << v1[i].sc << endl;
int ans2 = count1(v1, q);
cout << max(ans1, ans2);
}
/*
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
*/
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |