ペアリング系の問題
問題概要
以下の問題が 問出題されるのでそれぞれ答えよ:
- コーダーが 人、数学に強い人が 人、なんでもない人が 人いる
- ここからコーダー 1 人以上、数学強い人が 1 人以上を含む 3 人チームを最大何組できるか求めよ
考えたこと
- コーダーや数学人材的に、min(c, m) 組しか作れない
- また (c + m + x) / 3 組までしか作れない
これらの小さい方を答えれば OK。
たとえば だったら、そもそも数学に強い人が 3 人しかいないので 3 チームしか作れない。 だったら、コーダーが 3 人しかいないので 3 チームしか作れない。
反対に も も大きいが が足りないケースもある。たとえば の場合、コーダーも数学に強い人も潤沢にいるが、結局 (70 + 70 + 1) ÷ 3 = 47 チームしか作れない。
#include <iostream> #include <string> using namespace std; int CASE; long long c, m, x; long long solve() { long long res = min(c, m); res = min(res, (c+m+x)/3); return res; } int main() { cin >> CASE; while (CASE--) { cin >> c >> m >> x; cout << solve() << endl; } }