답안 #773092

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
773092 2023-07-04T15:00:24 Z NK_ Hotel (CEOI11_hot) C++17
100 / 100
535 ms 33848 KB
// Success consists of going from failure to failure without loss of enthusiasm
#include <bits/stdc++.h>

using namespace std;

#define nl '\n'
#define f first
#define s second
#define mp make_pair
#define sz(x) int(x.size())
#define all(x) begin(x), end(x)
#define rall(x) rbegin(x), rend(x)


using ll = long long;
using pi = pair<int, int>;
template<class T> using V = vector<T>;

int d[15];
int read() {
	char ch = getchar();
	while (ch < '0' || ch > '9') {
		ch = getchar();
	}
	int v = 0;
	while ('0' <= ch && ch <= '9') {
		v = v * 10 + (int) (ch - '0');
		ch = getchar();
	}
	return v;
}
 
void write(ll x) {
	int len = 0;
	while (x > 0) {
		d[len++] = x % 10;
		x /= 10;
	}
	for (int i = len - 1; i >= 0; i--) {
		putchar('0' + d[i]);
	}
	if (len == 0) {
		putchar('0');
	}
	putchar('\n');
}

int main() {
	cin.tie(0)->sync_with_stdio(0);
	
	int N = read(), M = read(), O = read();

	V<pi> A(N); for(auto& x : A) x.f = read(), x.s = read();
	V<pi> B(M); for(auto& x : B) x.f = read(), x.s = read();

	sort(all(A));
	sort(rall(B));

	set<pi> S; for(int i = 0; i < N; i++) S.insert(mp(A[i].s, i));

	V<int> P;
	for(int i = 0; i < M; i++) {
		auto it = S.lower_bound(mp(B[i].s, -1));
		if (it == end(S)) continue;
		int j = (*it).s;
		// cout << i << " " << j << endl;
		P.push_back(B[i].f - A[j].f);
		S.erase(it);
	}	

	sort(rall(P));

	ll ans = 0;
	for(int i = 0; i < min(O, sz(P)); i++) ans += max(0, P[i]);
	write(ans);

    return 0;
}


# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 212 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 1 ms 212 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 852 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 28 ms 3140 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 45 ms 5340 KB Output is correct
2 Correct 33 ms 4744 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 143 ms 13960 KB Output is correct
2 Correct 66 ms 7928 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 320 ms 27532 KB Output is correct
2 Correct 391 ms 27444 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 332 ms 33728 KB Output is correct
2 Correct 419 ms 33796 KB Output is correct
3 Correct 535 ms 33848 KB Output is correct