Official

A - 図鑑コンプリート / Encyclopedia Completion Editorial by physics0523


初心者の方へ


まず、撮影した花の番号を バケットソート します。
その後、ある種類の花を撮影していれば種類数に \(1\) 加算、種類番号の総和にその花の種類番号を加算すればよいです。

一連の流れは for 文や if 文の組み合わせなどの方法で実装できます。
時間計算量は \(O(N+\max S)\) ( \(\max S\) は花の番号の最大値 ) です。

実装例 (C++):

#include<bits/stdc++.h>

using namespace std;

int main(){
  int N;
  cin >> N;
  vector<int> bk(101,0);
  for(int i=0;i<N;i++){
    int S;
    cin >> S;
    bk[S]=1;
  }
  int r1=0,r2=0;
  for(int i=1;i<=100;i++){
    if(bk[i]){
      r1++; r2+=i;
    }
  }
  cout << r1 << " " << r2 << "\n";
  return 0;
}