FESTIVAL문제 질문입니다!

  • rlagptnr67
    rlagptnr67

    FESTIVAL

    알고스팟 입문자입니다:)
    FESTVAL문제를 풀었는데, 제출하면 자꾸 오류가나네요ㅠㅜ
    예외를 발견하지 못하여 이렇게 질문하게 되었습니다.

    문제를 푼 방법은
    1. 인덱스 x부터 오른쪽으로 team의 수만큼 합을 avg[x]배열에 저장.
    2. x-1>=0 이고, x-1을 더한 평균값이, 더하지 않은 평균값 보다 작을경우, avg[x]에 avg[x-1]을 더해줌.
    3. 오른쪽도 이와같이.
    4. 최소 평균값 탐색.

    입니다. 답변 부탁드립니다.!

    #include<iostream>
    
    int main()
    {
        int C;
        scanf("%d", &C);
        for(int i=0; i<C; i++){
            int day, team;
            double *pay, *avg;
            scanf("%d%d", &day,&team);
            pay = new double[day];
            avg = new double[day-team+1];
    
            for(int j=0; j<day; j++){// 금액 입력
                scanf("%lf", &pay[j]);
            }
    
            for(int x=0; x<day-team+1; x++){ // 각각 위치서부터 평균 계산
                avg[x] = 0.0;
                for(int y=0; y<team; y++){
                    avg[x]+=pay[x+y];
                }
                double tmp = team;
                int l = x-1;
                //왼쪽 숫자가 있고, 더한 평균이 더 작을 때, 왼쪽 더해주기
                while(l>=0 && (avg[x]+pay[l])/(tmp+1) < avg[x]/tmp){
                    avg[x]+=pay[l];
                    tmp++;
                    l--;
                }
                //오른쪽 숫자가 있고, 더한 평균이 더 작을 때, 오른쪽 더해주기
                int r = x+team;
                while(r<day && (avg[x]+pay[r])/(tmp+1) < avg[x]/tmp){
                    avg[x]+=pay[r];
                    tmp++;
                    r++;
                }
                // 평균값 저장
                avg[x]/=tmp;
            }
    
            double min = avg[0];
            for(int j=0; j<day-team+1; j++){
                if(avg[j] < min){
                    min = avg[j];
                }
            }
            printf("%.10lf\n", min);
            delete[] pay;
            delete[] avg;
        }
    
        return 0;
    }
    


    10년 전
2개의 댓글이 있습니다.
  • VOCList
    VOCList

    1
    11 6
    1 1 5 4 3 10 3 4 5 1 1

    정답은 모두 선택하는거에용.


    10년 전 link
  • rlagptnr67
    rlagptnr67

    답변감사드려요! 다시해볼께요!


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