けんちょんの競プロ精進記録

競プロの精進記録や小ネタを書いていきます

Educational Codeforces Round 73 C. Perfect Team (R1200)

ペアリング系の問題

問題へのリンク

問題概要

以下の問題が  Q 問出題されるのでそれぞれ答えよ:

  • コーダーが  c 人、数学に強い人が  m 人、なんでもない人が  x 人いる
  • ここからコーダー 1 人以上、数学強い人が 1 人以上を含む 3 人チームを最大何組できるか求めよ

考えたこと

  • コーダーや数学人材的に、min(c, m) 組しか作れない
  • また (c + m + x) / 3 組までしか作れない

これらの小さい方を答えれば OK。

たとえば  c = 5, m = 3, x = 100 だったら、そもそも数学に強い人が 3 人しかいないので 3 チームしか作れない。 c = 3, m = 5, x = 100 だったら、コーダーが 3 人しかいないので 3 チームしか作れない。

反対に  c m も大きいが  x が足りないケースもある。たとえば  c = 70, m = 70, x = 1 の場合、コーダーも数学に強い人も潤沢にいるが、結局 (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;
    }
}