数组的话地址必须是连续的,那么会有许多的浪费,而且输出的时候也是极为不方便的。使用map容器可以极大的简化这个问题。
而且注意输出格式,每个样例之间需要有一个空白行但是最后一行却不需要,就用这种输出,上次弥补下次的换行符号。
#include <iostream>
#include <map>
#include <stdio.h>
//using namespace std;
int main() {
int n;
std::map<int,int> M;
std::map<int,int>::iterator it;
int ii=0;
while(scanf("%d",&n)!=EOF) {
if(ii) printf("\n");
ii = 1;
M.clear();
for(int i=0;i<n;i++) {
int a;
scanf("%d",&a);
M[a]++;
}
for (it=M.begin();it!=M.end();it++)
printf("%d %d\n",it->first,it->second);
// cout<<it->first<<" "<<it->second<<endl;
}
}