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