题目链接:http://codeforces.com/problemset/problem/300/A

题目意思:给出n个数,将它们分成三批:1、所有数相乘的结果 < 0    2、所有数相乘的结果 > 0;   3、所有数相乘的结果 = 0   还需要满足一个条件:n个数的归属只可以是其中的一批。

由于翻译的时候总是以整个短语来翻,因此一直误以为“product”是“产物”的意思,多谢乌冬兄指点迷津。

不难想到对所有数进行排序,最小的那个数绝对是负数,因此第一批数放1个即可;最大的那个数归到第2批(也是1个),但有个问题,有可能最大的那个数是0,此时第2批要放2两个数(负数),保证相乘是整数,其余放在第3批即可(0和任意一个数相乘都为0),稍稍注意就可以过。

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
using namespace std; const int maxn = + ;
int a[maxn]; int main()
{
int n, i, j;
while (scanf("%d", &n) != EOF)
{
for (i = ; i < n; i++)
scanf("%d", &a[i]);
sort(a, a+n);
printf("1 %d\n", a[]);
if (n == )
printf("1 %d\n1 %d\n", a[], a[]);
else
{
if (a[n-])
{
printf("1 %d\n", a[n-]);
printf("%d ", n-);
}
else
printf("2 %d %d\n%d ", a[], a[], n-);
i = (a[n-] ? : ); // 记录第2批数的起始
j = (a[n-] ? n- : n); // 记录第2批数的终点
for ( ; i < j; i++)
printf("%d ", a[i]);
printf("\n");
}
}
return ;
}

最新文章

  1. 数组栈的C语言实现
  2. python 获取html源代码里标签之间的文本用get_text()
  3. GitHub入门教程 Hello World for GitHub
  4. mysql启动不起来了!
  5. Hive conf issue
  6. 洛谷P2726 阶乘 Factorials
  7. c#, 输出二进制
  8. 使用CSS达到阴阳八卦图等图形
  9. Windows系统版本号判定那些事儿
  10. Windows:将cmd命令行添加到右键中方法
  11. PostgreSQL 常用系统自带方法
  12. 仿9GAG制作过程(二)
  13. 利用div+css实现九宫格,然后用js实现点击每个格子可以随机更改格子(div)的背景颜色
  14. uva-10245-分治
  15. IntelliJ IDEA 快捷键说明大全(中英对照、带图示详解)
  16. getHibernateTemplate()的用法 (转)
  17. 2018.11.01 NOIP训练 梭哈(模拟)
  18. netty服务端实现心跳超时的主动拆链
  19. 单纯形算法 matlab
  20. F6&amp;F7adjust the volume

热门文章

  1. deferred 对象
  2. Java中将List转成逗号数组的方案
  3. Wdatepick控件只能选当前时间以前的时间
  4. SilverLight-DataControls:四、The PagedCollectionView(分页的集合视图) 对象
  5. 【POJ 3026】Borg Maze
  6. 有关C/C++指针的经典面试题(转)
  7. c#列表操作
  8. 递归计算战士打靶S次打了N环一共同拥有多少种可能的问题
  9. 系统安全-Firewall
  10. Mataplotlib绘图和可视化