이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <iostream>
#include <algorithm>
#include <set>
#define NMAX 500005
using namespace std;
struct room
{
int cost, capacity;
} ROOMS[NMAX], A;
multiset <room> MS;
multiset <room> :: iterator it;
struct offer
{
int price, dimension;
} OFFERS[NMAX];
long long ANSWER;
int N, M, NO, DIF[NMAX];
bool operator < (const room& X, const room& Y)
{
if (X.capacity!=Y.capacity)
return X.capacity<Y.capacity;
return X.cost<Y.cost;
}
bool cmpOF(offer A, offer B)
{
if (A.price > B.price)
return true;
return false;
}
int main()
{
cin >> N >> M >> NO;
for (int i = 1; i <= N; ++i)
{
cin >> ROOMS[i].cost >> ROOMS[i].capacity;
MS.insert(ROOMS[i]);
}
for (int i = 1; i <= M; ++i)
cin >> OFFERS[i].price >> OFFERS[i].dimension;
sort(OFFERS + 1, OFFERS + M + 1, cmpOF);
for (int i = 1; i <= M; ++i)
{
A.cost = 0, A.capacity = OFFERS[i].dimension;
it = MS.upper_bound(A);
if (it == MS.end())
continue;
A = (*it);
DIF[i] = OFFERS[i].price - A.cost;
}
sort(DIF + 1, DIF + M + 1);
for (int i = M; i > M - NO; --i)
if (DIF[i] > 0)
ANSWER += DIF[i];
cout << ANSWER;
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |