トピックへのリンク:http://codeforces.com/problemset/problem/1174/B
問題の意味:長さnの指定された配列は、任意の二つの奇数の和は、アレイ内の位置に、可能な限り小さなアレイから大に交換することができます。
アイデア:2であれば数が異なるパリティが、任意の数を交換する方法はありません、純粋な又は純粋偶奇アレイ、交換することができる見つけることは困難ではないように出力することです。ピュアパリティは、あなたが望む位置に変更し、任意の数を置くことができる、配列ではないので、出力は配列のソートをソートすることができます。
ACコード:
1 #include<bits/stdc++.h> 2 using namespace std; 3 const int maxn = 1e5 +5; 4 int n; 5 int a[maxn]; 6 int main() 7 { 8 scanf("%d",&n); 9 bool flag = false; 10 for(int i = 0;i < n;i++) 11 { 12 scanf("%d",&a[i]); 13 if(i&&!flag){ 14 if(a[i]%2 != a[i-1]%2) 15 flag = true; 16 } 17 } 18 if(flag) 19 { 20 sort(a,a+n); 21 for(int i = 0;i < n;i++) printf("%d ",a[i]); 22 } 23 else for(int i = 0;i < n;i++) printf("%d ",a[i]); 24 return 0; 25 }