Codeforces 300A Array 【模拟】
2016-03-23 00:13
351 查看
题目链接:Codeforces 300A Array
题意:给定n个数,让你分成三个集合。满足三个集合元素的乘积<0、==0、>0。保证至少存在一组解。
思路:先判断是否有正整数,然后只取一个负整数、一个正整数(或者两个负整数)。
AC代码:
题意:给定n个数,让你分成三个集合。满足三个集合元素的乘积<0、==0、>0。保证至少存在一组解。
思路:先判断是否有正整数,然后只取一个负整数、一个正整数(或者两个负整数)。
AC代码:
#include <iostream> #include <cstdio> #include <cstring> #include <cstdlib> #include <cmath> #include <algorithm> #include <vector> #include <queue> #include <map> #include <stack> #define PI acos(-1.0) #define CLR(a, b) memset(a, (b), sizeof(a)) #define fi first #define se second #define ll o<<1 #define rr o<<1|1 using namespace std; typedef long long LL; typedef pair<int, int> pii; const int MAXN = 100 + 10; const int pN = 1e6;// <= 10^7 const int INF = 0x3f3f3f3f; const int MOD = 1e9 + 7; void add(LL &x, LL y) { x += y; x %= MOD; } int a[MAXN]; map<int, bool> fp; int main() { int n; cin >> n; int cnt = 0; for(int i = 0; i < n; i++) { cin >> a[i]; cnt += a[i] > 0; } sort(a, a+n); cout << 1 << ' ' << a[0] << endl; bool flag = true; if(cnt == 0) { flag = false; cout << 2 << ' ' << a[1] << ' ' << a[2] << endl; } else { cout << 1 << ' ' << a[n-1] << endl; } if(flag) { cout << n - 2; for(int i = 1; i < n-1; i++) { cout << ' ' << a[i]; } cout << endl; } else { cout << n - 3; for(int i = 3; i < n; i++) { cout << ' ' << a[i]; } cout << endl; } return 0; }
相关文章推荐
- dialog背景的层次
- 继续xxx定律
- Python-分发工具初探之-setuptools
- 程序中的乐观锁与悲观锁,以及动手实现乐观锁 (转)
- 南阳题目77-开灯问题
- python enumerate
- codeforces 86D D. Powerful array(莫队算法)
- 解决Spring Boot OTS parsing error: Failed to convert WOFF 2.0
- oracle转mysql总结(转)
- Torch学习笔记1--Torch简介
- cookie中maxAge总是-1和tomcat设置编码方式
- VMware安装CentOS无法自动获取IP问题
- 关于Win10系统下VC2013安装Unit test出现问题的解决办法
- A标签的用法
- Modular_exponentiation模幂运算
- ubuntu中添加非标准路径的动态库
- lightoj 1081 - Square Queries 【二维线段树】
- 程序员的自我修养——动态链接
- Windows中进程的内存结构
- 剪贴板