CF1509A Average Height 题解
题目传送门
题目翻译:给出一个序列,如果一行上的两个连续的成员 \(u\) 和 \(v\) 的平均高度为整数,即 \(\frac{a_u+a_v}{2}\) 为整数,则认为它们是上镜的。将序列重新排序,让上镜的数量最大,求这个重新排序的序列。
我们发现只要是两个数字同奇同偶那么这两个数就是上镜的。
我们只要把所有的奇数放在前面,所有的偶数放在后面就可以了。
代码:
#include<cstdio>
#define maxn 2039
using namespace std;
//#define debug
typedef int Type;
inline Type read(){
Type sum=0;
int flag=0;
char c=getchar();
while((c<'0'||c>'9')&&c!='-') c=getchar();
if(c=='-') c=getchar(),flag=1;
while('0'<=c&&c<='9'){
sum=(sum<<1)+(sum<<3)+(c^48);
c=getchar();
}
if(flag) return -sum;
return sum;
}
int cnt1,cnt2;
int a1[maxn],a2[maxn];
int a,T,n;
int main(){
//freopen(".in","r",stdin);
//freopen(".out","w",stdout);
T=read();
while(T--){
n=read();
cnt1=cnt2=0;
for(int i=1;i<=n;i++){
a=read();
if(a&1) a1[++cnt1]=a;
else a2[++cnt2]=a;
}
for(int i=1;i<=cnt1;i++)
printf("%d ",a1[i]);
for(int i=1;i<=cnt2;i++)
printf("%d ",a2[i]);
putchar('\n');
}
return 0;
}