festival 컴퓨터에서 하면 잘 되는데 왜 오답일까요..

  • ioe
    ioe
    #include <stdio.h>
    #include <string.h>
    
    int main()
    {
        //input
    
        int count;
        int cost[1100];
        int cost1;
        int min;
        int max;
        double out;
        double in;
        double result;
        int i = 0, j = 0;
        scanf("%d", &count);
        if (count <= 100 && count >= 0)
        {
            for (i = 1; i <= count; i++)
            {
                out = 101;
                result = 0;
                in = 0;
    
                scanf("%d %d", &max, &min);
                if (max >= min&&max <= 1000 && min >= 1) {
    
    
    
                    for (j = 1; j <= max; j++)
                    {
                        scanf("%d", &cost1);
                        if (cost1 <= 100 && cost1 >= 0) {
                            cost[j] = cost1;
    
                            in = in + (double)cost[j];
                            if (j >= min)
                            {
                                result = in / (j);
                                if (result < out)
                                    out = result;
                            }
                        }
                    }
                    memset(cost, 0, sizeof(int)*max);
                    max = 0;
                    min = 0;
                    cost1=0;
    
                }
                printf("%.10lf\n", out);
            }
        }
    
        return 0;
    }
    

    8년 전
2개의 댓글이 있습니다.
  • hyunhwan
    hyunhwan
    • 자신의 해법에 대한 설명을 적어주시면 보다 빠른 시간에 다른 회원들의 답을 받으실 수 있을 것으로 생각됩니다.
    • 의도하신건지 모르겠지만 해당 코드는 무조건 cost[0] 부터 cost[j]까지의 (다시 말해서, 맨 앞에서부터 연속된 임의의 구간) 평균치를 구할 수 밖에 없습니다.
    • 다음의 경우에는 10이 답이 나와야 하는데 `53.3333333'이 나오네요.
    1
    3 1
    100 50 1

    8년 전 link
  • ioe
    ioe

    아. 문제를 잘못 봤네요.


    8년 전 link
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.