Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

有用C写过的没??怎么写不超时啊???我写的超时,郁闷,牛子指点下

Posted by bootshl at 2008-07-26 13:23:25 on Problem 2833
#include <stdio.h>
#include <stdlib.h>
int MyCompare(const void* e1, const void* e2);

int main()
{
    int n1, n2, n, count_max,  i, nmax;
    long  a, max[50];
    double sum;
    while (scanf("%d%d%d", &n1, &n2, &n) == 3 && n1) {
        sum = 0;
        count_max =  0;
        for (i = 0; i < n; i++) {
            scanf("%ld", &a);
            if (i < n1+n2) {
                max[count_max++] = a;
                sum += a;
                continue;
            }
            qsort(max, n1+n2, sizeof(long),MyCompare);
            if (a > max[n1+n2-n1])
                max[n1+n2-n1] = a;
            if (a < max[n2-1])
                max[n2-1] = a;
            sum += a;
        }

        for (i = 0; i < n1+n2; i++)
            sum -= max[i];
        printf("%.6lf\n", sum/(n-n1-n2));
    }
    return 0;
}


int MyCompare(const void* e1, const void* e2)
{
    return *((long*)e1) - *((long*)e2);
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator