AOJ_0108 Operation of Frequency of Appearance

問題
解法
問題文にかかれている通りにやるだけ。

#include <cstdio>
#include <algorithm>
using namespace std;

const int MAX_N = 12;
int S[MAX_N], T[MAX_N], N;
int main(){
	while(scanf("%d", &N) &&N){
		int ans;
		for(int i = 0; i < N; i++)
			scanf("%d", &S[i]);
		for(ans = 0;;ans++){
			bool f = true;
			for(int i = 0; i < N; i++){
				int sum = 0;
				int t = S[i];
				for(int j = 0; j < N; j++){
					if(S[j] == t) sum++;
				}
				T[i] = sum;
				f = f && (T[i] == S[i]);
			}
			if(f) break;
			for(int i = 0; i < N; i++)
				S[i] = T[i];
		}
		printf("%d\n", ans);
		for(int i = 0; i < N; i++){
			if(i == N-1)
				printf("%d\n", S[i]);
			else
				printf("%d ", S[i]);
		}
	}
	return 0;
}