10 条题解
-
0
考察知识点: 构造法
首先考虑无解的情况,因为 是偶数,所以当数列中出现了 种不同的数字,且 为奇数时,无解,输出 。
接着就是有解的情况,把 个数字全都输出,由于 是偶数,且每个数字有且仅有出现了 次,所以偶数个数字构成的序列中数字种类数必定为偶数。所有的都输出完毕了,后面只可能出现 种数字,而 又是偶数,所以可以直接按顺序直接输出。
Code:
#include <bits/stdc++.h> using namespace std; int a[100005]; int main() { memset(a,0,sizeof a); int n,s = 0,ma = 0,x; cin >> n; for (int i = 1;i <= n;i++) { cin >> x; ma = max(ma,x); if (a[x] == 0) s++; a[x]++; } if (s % 2 == 1) { cout << -1; return 0; } for (int i = 1;i <= ma;i++) { if (a[i] >= 1) { cout << i << ' '; a[i]--; } } for (int i = 1;i <= ma;i++) { if (a[i] >= 1) { for (int j = 1;j <= a[i];j++) { cout << i << ' '; } } } return 0; }
信息
- ID
- 2
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 2
- 标签
- 递交数
- 442
- 已通过
- 192
- 上传者