Codeforces Round #563 (Div. 2)
#include <bits/stdc++.h> static const int MAXN=2050; using namespace std; int n,res1,res2,a[MAXN]; int main(){ cin>>n; for(int i=1;i<=(n<<1);i++) cin>>a[i]; sort(a+1,a+(n<<1)+1); for(int i=1;i<=n;i++) res1+=a[i]; for(int i=n+1;i<=(n<<1);i++) res2+=a[i]; if(res1==res2) cout<<"-1"<<endl; else{ for(int i=1;i<=n;i++) cout<<a[i]<<" "; for(int i=n+1;i<(n<<1);i++) cout<<a[i]<<" "; cout<<a[(n<<1)]<<endl; } return 0; }
由于奇数+偶数=奇数,则可说明所有的偶数与奇数都可以互换位置,排序即可。
#include <bits/stdc++.h> static const int MAXN=100050; using namespace std; int n,a[MAXN]; bool vis[3]; int main(){ cin>>n; for(int i=1;i<=n;i++){ cin>>a[i]; vis[a[i]%2]=true; } if(vis[0]&&vis[1]) sort(a+1,a+n+1); for(int i=1;i<n;i++) cout<<a[i]<<" "; cout<<a[n]<<endl; return 0; }
C.Ehab and a Special Coloring Problem
质数显然互质,故不可相同。
由于使得编号较小,则从$1$开始分配,用筛法把合数也用此表示,即可。
#include <bits/stdc++.h> static const int MAXN=100050; using namespace std; int n,cnt,num[MAXN]; int main(){ cin>>n; for(int i=2;i<=n;i++){ if(!num[i]){ num[i]=++cnt; for(int j=i;j<=n;j+=i) num[j]=cnt; } printf("%d ",num[i]); } return 0; }