描述
题解
数据结构用 map ,在此基础上进行贪心策略就好了。不难,和前几天的多校的有一道题好像挺相似的。
代码
#include <iostream>
#include <map>
using namespace std;
map<int, int> mii;
const int MAXN = 1111;
int m;
int a[MAXN];
int main(int argc, const char * argv[])
{
while (~scanf("%d", &m))
{
mii.clear();
int x;
for (int i = 0; i < m; i++)
{
scanf("%d", &x);
mii[x]++;
}
int cnt = 0;
for (auto i : mii)
{
while (i.second > 0)
{
for (int j = 0; j < cnt; j++)
{
mii[i.first + a[j]]--;
}
i.second--;
a[cnt++] = i.first;
}
}
printf("%d\n", cnt);
for (int i = 0; i < cnt; i++)
{
printf("%d%c", a[i], i == cnt - 1 ? '\n' : ' ');
}
}
return 0;
}