您的位置:首页 > 其它

codeforces 300A Array

2013-05-30 22:22 162 查看
把一个数组分成三个部分,第一部分积为正,第二部分积为负,第三部分积0;

发现自己总是处理不好细节问题。。。。

#include <stdlib.h>

#include <string.h>

#include <stdio.h>

#include <ctype.h>

#include <math.h>

#include <stack>

#include <queue>

#include <map>

#include <set>

#include <vector>

#include <string>

#include <iostream>

#include <algorithm>

using namespace std;

#define ll long long

#define ls rt<<1

#define rs ls1

#define lson l,mid,ls

#define rson mid+1,r,rs

#define middle (l+r)>>1

#define eps (1e-9)

#define clr_all(x,c) memset(x,c,sizeof(x))

#define clr(x,c,n) memset(x,c,sizeof(x[0])*(n+1))

#define MOD 1000000007

#define inf 100000007

#define pi acos(-1.0)

#define for(i,a,b) for(int i=(a);i<(b);i++)

#define M 100+5

int a[M],n;

int main(){

int i,j;

while(~scanf("%d",&n)){

memset(a,0,sizeof(a));

for(i,0,n)

scanf("%d",&a[i]);

sort(a,a+n);

printf("1 %d\n",a[0]);

if(a[n-1]>0){

printf("1 %d\n",a[n-1]);

printf("%d",n-2);

for(i,1,n-1)printf(" %d",a[i]);

}else{

printf("2 %d %d\n",a[1],a[2]);

printf("%d",n-3);

for(i,3,n)printf(" %d",a[i]);

}

puts("");

}

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: