Festival 오류

  • skylife927
    skylife927

    https://algospot.com/judge/problem/read/FESTIVAL
    오류네요.
    댓글 보면서 double이고, .8f 로 출력했는데.. 흠..
    double min값의 전역변수 선언때문에 그런것인지
    궁금합니다 ㅎㅎ
    미리 답변 감사합니다.

    #include <iostream>
    
    using namespace std;
    #define MAX_N 1001
    
    int N, C;
    int arr[MAX_N];
    double mAverage=9999;
    
    double arrSumAvg(int start, int end){
        double sum = 0;
        for(int i=start; i<=end; i++)
            sum += arr[i];
        return sum / (end-start+1);
    }
    
    void cal(){
        // 1부터 N-C까지 for문 돌린다.
        // 각 단계마다 평균값을 구한다. 
        // for문으로 j=i부터 C to N까지의 평균값을 구해서 비교한다.
        for(int i=1; i<=N-C; i++){
            for(int j = i+C-1 ;j<=N; j++){
                double t = arrSumAvg(i, j);
                if(t < mAverage) mAverage = t;
            }
        }
    }
    
    void init(){
        N = C = 0;
        mAverage = 9999;
        for(int i=0; i<MAX_N; i++)
            arr[i] = 0;
    }
    int main(int argc, char** argv)
    {
        int test_case;
        int T;
    
        cin >> T;
        for(test_case = 0; test_case < T; test_case++)
        {
            init();
            // N 1~1000 C 1~1000
            cin>>N>>C;
            for(int i=1; i<=N; i++)
                cin>>arr[i];
            cal();
            printf("%.8f\n", mAverage);
        }
    
        return 0;
    }
    

    8년 전
2개의 댓글이 있습니다.
  • hyunhwan
    hyunhwan

    N = 10, C = 7일 경우에 반복문i의 맨 마지막 값이 8이 되어야 [8, 9, 10]인 경우를 볼 수 있을 텐데, 지금의 경우에는 맨 마지막에 헤아리는 경우는 [7, 8, 9]인것 같습니다.


    8년 전 link
  • skylife927
    skylife927

    감사합니다. 끝에 3개를 헤아린다고 해서 N-C를 했는데 N-C+1을 해주어야 하는군요. 덕분에 통과하였습니다.


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