poj 3399 Product(模拟)
来源:互联网 发布:银联数据 催收联盟 编辑:程序博客网 时间:2024/06/14 10:26
# include <stdio.h># include <string.h># include <algorithm>using namespace std;int cmp(int x,int y){return x>y;}int main(){int a[110],a1[110],a2[110],ans[110];int n,k,k1,k2,i,k3;while(~scanf("%d%d",&n,&k)){k1=0;k2=0;for(i=0;i<n;i++){scanf("%d",&a[i]);if(a[i]>0)//存正数a1[k1++]=a[i];else//存负数a2[k2++]=a[i];}sort(a1,a1+k1);sort(a2,a2+k2,cmp);//负数从大到小k3=0;if(k%2)//k为奇数{k--;if(k1>0){ans[k3++]=a1[--k1];//先选一个最大的正数}else//全部为负数的情况{for(i=0;i<=k;i++)//因为为奇数,选大的负数{if(i==0)printf("%d",a2[i]);elseprintf(" %d",a2[i]);}printf("\n");continue;}}for(i=0;i<k/2;i++)//剩下k/2对{if(k1>=2&&k2>=2){int t1=a1[k1-1]*a1[k1-2];int t2=a2[k2-1]*a2[k2-2];if(t1>t2)//选大的{ans[k3++]=a1[--k1];ans[k3++]=a1[--k1];}else{ans[k3++]=a2[--k2];ans[k3++]=a2[--k2];}}else if(k1>=2){ans[k3++]=a1[--k1];ans[k3++]=a1[--k1];}else if(k2>=2){ans[k3++]=a2[--k2];ans[k3++]=a2[--k2];}else{ans[k3++]=a1[--k1];ans[k3++]=a2[--k2];}}sort(ans,ans+k3);for(i=k3-1;i>=0;i--){if(i==k3-1)printf("%d",ans[i]);elseprintf(" %d",ans[i]);}printf("\n");}return 0;}
0 0
- poj 3399 Product(模拟)
- poj 3399 Product(数学题)
- poj 3399 Product
- POJ 3399 Product 再想想
- PAT-A1009 Product of Polynomials (25)(模拟)
- poj 3325(模拟)
- POJ 1008(模拟)
- poj 2632 (模拟)
- POJ 1068(模拟)
- POJ 3087(模拟)
- poj 3087 (模拟)
- POJ 1008 (模拟)
- [模拟]uva993 Product of digits
- POJ 2190(模拟策略)
- poj 2745显示器(模拟)
- poj 1068 Parencodings(模拟)
- poj 1597(水模拟)
- poj 1068 Parencodings(模拟)
- 如何解决RedisLive不能显示曲线图的问题
- uptime
- 架构相关
- 关于简单的单道红绿灯
- java分割list数据
- poj 3399 Product(模拟)
- 嘻嘻哈哈白了星雅一眼2014-08-04
- 杭电ACM 2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活(多重背包问题)
- 嘻嘻哈哈白了星雅一眼2014-08-04
- 怎么在eclipse中使用自己编译的SDK
- OC内存管理
- struts2
- 杭电 1171
- intent