现在的位置: 首页 > 综合 > 正文

ZOJ-1543

2014年10月10日 ⁄ 综合 ⁄ 共 431字 ⁄ 字号 评论关闭

从最大的开始计算直到最小的,结果的总weight会是最小值,虽然不会证明。。但直觉上是这样,AC了

#include<stdio.h>
#include<math.h>
#include<stdlib.h>

int cmp1543(const void *p1, const void *p2)
{
    return *(int *) p2 - *(int *) p1;
}

int main()
{
    int n;
    while (scanf("%d", &n) != EOF)
    {
        int *array = (int *) malloc(n * sizeof(int));
        int i, total = n;
        double r;
        while (n--)
            scanf("%d", array + n);
        qsort(array, total, sizeof(int), cmp1543);
        r = *array;
        for (i = 1; i < total; i++)
        {
            r = 2 * sqrt(*(array + i) * r);
        }
        printf("%.3lf\n", r);
        free(array);
    }
    return 0;
}

抱歉!评论已关闭.