描述
快递公司的某站点收到了很多件物品,快递员会给每类物品贴上一个数字标签,同一类物品的数字标签相同,以便自动化处理。
现在一批物品标签都贴完之后,快递员想让你帮他统计这些物品总共有多少类,每类物品各有多少件。
输入格式
第一行包含一个正整数n,表示物品的个数;
第二行包含n个正整数,表示快递员在物品上所贴标签的数字,两两之间用一个空格分隔。
输出格式
第一行包含一个正整数m,接下来的m行,每行包含两个数,用一个空格分隔,第一个数表示代表分类的数字xi,第二个数字表示分类编号为xi的物品的个数。
样例输入
10
2 3 1 12 3 8 8 2 2 2
样例输出
5
1 1
2 4
3 2
8 2
12 1
问题提示
1<n<10,000, 1≤xi≤1000。
#include <iostream>
using namespace std;
typedef struct _XI
{
int xi;
int count;
}XI;
int main()
{
int n,t;
int iclass = 0;
cin >> n;
XI* xi = new XI[n]{0};
for (int j, i = 0; i < n; i++)
{
cin >> t;
for (j = 0; j < iclass; j++)
{
if (xi[j].xi == t)
{
xi[j].count++;
break;
}
}
if (j == iclass)
{
xi[j].xi = t;
xi[j].count++;
iclass++;
}
}
XI xit;
for (int j, i = 0; i < iclass-1; i++)
{
for (j = i; j < iclass; j++)
{
if (xi[i].xi > xi[j].xi)
{
xit = xi[i];
xi[i] = xi[j];
xi[j] = xit;
}
}
}
cout << iclass << endl;
for (int j = 0; j < iclass; j++)
{
cout << xi[j].xi << " " << xi[j].count << endl;
}
return 0;
}