diff --git a/_hojun/4716.cpp b/_hojun/4716.cpp new file mode 100644 index 00000000..953b3411 --- /dev/null +++ b/_hojun/4716.cpp @@ -0,0 +1,68 @@ +#include +#define endl "\n" + +using namespace std; + +struct team +{ + int balloons, disA, disB; +}; + +int main() { + ios::sync_with_stdio(false); + cin.tie(NULL); + + while (true) + { + int N, A, B; cin >> N >> A >> B; + if (!N && !A && !B) break; + long long ans = 0; + vector teams(N); + + for (int i = 0; i < N; ++i) { + cin >> teams[i].balloons >> teams[i].disA >> teams[i].disB; + } + + // A¿Í B±îÁöÀÇ °Å¸®ÀÇ Â÷°¡ Å« ¼ø¼­·Î Á¤·Ä + sort(teams.begin(), teams.end(), [](team a, team b) { return abs(a.disA - a.disB) > abs(b.disA - b.disB); }); + + for (int i = 0; i < N; ++i) { + int Balloon = teams[i].balloons; + int curDisA = teams[i].disA; + int curDisB = teams[i].disB; + + if (curDisA < curDisB) { + if (A >= Balloon) { + ans += Balloon * curDisA; + A -= Balloon; + } + else { + // A¿¡ ³²Àº dz¼±ºÎÅÍ Àü´Þ + ans += curDisA * A; + Balloon -= A; + A = 0; + // ³²Àº ¾ç¸¸Å­ B¿¡¼­ Àü´Þ + ans += Balloon * curDisB; + B -= Balloon; + } + } + else { + if (B >= Balloon) { + ans += Balloon * curDisB; + B -= Balloon; + } + else { + ans += curDisB * B; + Balloon -= B; + B = 0; + + ans += Balloon * curDisA; + A -= Balloon; + } + } + } + + cout << ans; + } + return 0; +} \ No newline at end of file