AOJ_0028 Mode Value

問題
やるだけ。
はじめ、与えられる整数が100以下という条件をよみ忘れていて、へんなことをしていた。

#include <cstdio>
#include <algorithm>
using namespace std;
int n[101];
int main(){
	int i,m=0;
	while(scanf("%d", &i) != EOF)n[i]++;
	for(i=0;i<101;i++)m=max(m,n[i]);
	for(i=0;i<101;i++)if(m==n[i])printf("%d\n",i);
	return 0;
}

↓100以上でもOKなコード

#include <cstdio>
#include <algorithm>
using namespace std;
typedef pair<int,int> D;
D n[100];
int d_size = 0;
int mode[100];
int main(){
	int t,m=0;
	while(scanf("%d", &t) != EOF){
		bool f = true;
		for(int i = 0; i < d_size; i++){
			if(n[i].first == t){
				f = false;
				n[i].second++;
				m=max(m,n[i].second);
			}
		}
		if(f){
			n[d_size] = D(t,1);
			m=max(m,n[d_size].second);
			d_size++;
		}
	}
	int j = 0;
	for(int i = 0; i < d_size; i++){
		if(n[i].second == m){
			mode[j] = n[i].first;
			++j;
		}
	}
	sort(mode, mode + j);
	for(int i = 0; i < j; i++)
		printf("%d\n", mode[i]);
	return 0;
}