/*用快排也可以
*/
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<stdio.h>
#include<vector>
using namespace std;
struct heapnode
{
int capcity;
int size;
int* h;
};
typedef struct heapnode *Heap;
Heap creat(int n)
{
Heap H;
H = (Heap)malloc(sizeof(struct heapnode));
H->h = (int *)malloc(sizeof(int)*(n + 1));
H->h[0] = 0;
H->capcity = n;
H->size = 0;
return H;
}
void insert(Heap H,int num)
{
H->size++;
int i = H->size;
for (; H->h[i / 2] > num; i /= 2)
{
H->h[i] = H->h[i / 2];
}
H->h[i] = num;
}
int Delete(Heap H)
{
int num = H->h[1];
int parent, child;
int x = H->h[H->size--];
for (parent = 1; parent * 2 < H->size; parent = child)
{
child = parent * 2;
if (child + 1 < H->size&&H->h[child] > H->h[child + 1])
child++;
if (x <= H->h[child])
break;
else
H->h[parent] = H->h[child];
}
H->h[parent] = x;
return num;
}
int main()
{
int n;
while (scanf("%d",&n)!=EOF)
{
int sum = 0;
int i;
int emp;
Heap H = creat(n);
for (i = 0; i < n; i++)
{
scanf("%d", &emp);
sum += emp;
insert(H, emp);
}
int minsum = 0;
for (i = 0; i < n / 2; i++)
{
emp = Delete(H);
minsum += emp;
}
if (n % 2 == 1)
printf("1 ");
else
printf("0 ");
printf("%d", sum - minsum * 2);
}
return 0;
}
PAT|1113. Integer Set Partition
猜你喜欢
转载自blog.csdn.net/sinat_35205772/article/details/52487113
今日推荐
周排行