ABC064: C - Colorful Leaderboard

問題

C: Colorful Leaderboard - AtCoder Beginner Contest 064 | AtCoder

解説

3200未満のレートの人間がn人、3200以上のレートの人間がm人いるとする。 3200未満の場合400で割った値をsetに詰めて重複を殺して数え上げる。 最大数について、m人全員が別々の色を使えば良いので、n + mである。 最小数について、

  1. n = 0の場合、m人全員が同じ色を使用したときに色の最小数は1である。
  2. n > 0の場合、m人全員がn人中の何れかの人と同じ色を使えば良いので、使用する色の最小数はnである。
int main() {

  int N; cin >> N;
  set<int> st;
  int count = 0;
  rep(i, N) {
    int a; cin >> a;
    if (a >= 3200) {
      count++;
    } else {
      st.insert(a / 400);
    }
  }

  if (st.size() == 0) {
    std::cout << "1 ";
  } else {
    std::cout << st.size() << " ";
  }
  std::cout << st.size() + count << "\n";
  
  return 0;
}