FESTIVAL 난이도:하 문제 질문

  • htamop
    htamop

    계속 시도하고 디버깅하고 확인해도 도저히 모르겠어서
    질문합니다. 밥도 못먹고 아 답답하네요 ㅠㅠ

    문제 : FESTIVAL
    축제를 하는데 N개의 대여가능한 날짜가 나열되어있고
    최소 L팀이 각각 날마다 공연할 수 있도록
    L개이상의 연속된 날짜를 선택합니다.
    즉 3팀이라면 4개의 날을 선택할수도 있다는 뜻.
    이때 평균비용이 가장 적은 값을 구하는 것입니다.

    6일이 대여가능하고 최소 3팀이라면
    각 비용이
    굵게 3 1 2 3 1 1 이면

    3 1 1 하면 5/3 = 1.6666
    2 3 1 1 이면 7/4 1.75
    1 2 3 1 1 이면 8/5 = 1.6 으로
    답은1.6이 되고 이를 출력해주는 문제입니다.

    //FESTIVAL
    /* 1.C test case <=100
    2.L team <=1000
    3.N days <= 1000
    4.costs of each days <=100 (natural n)
    */

    #include

    int main() {
    int T; //test case
    int cnt;

    double answer[100];
    int L,N;
    int costs[1000];
    
    double min;  
    double avr;
    
    int sum=0;
    int i,j,temp;
    int rentaldays; // Be careful  sum/rentaldays  is  integer !
    
    scanf("%d",&T);
    
    cnt=0;
    while( cnt < T ) { // T times loop
        // ---------------------------------------------------inputs
        scanf("%d %d", &N, &L); // days, teams   N>L
        for(i=0;i< N; i++) {
            scanf("%d",&costs[i]);
        }
    
        min=1000;  // always bigger than avg
        for(i=0;i<= N-L;i++) {
            sum=0;
            rentaldays=L;
    
            if(min == 1)   // most minimum value 
                break;
    
    
    
            for(j=i ; j< L+i; j++) {
                sum = sum + costs[j];
            }
            avr = (double)sum / rentaldays; 
            if(min> avr) {
                min=avr;
            }
            for(rentaldays=L+1;rentaldays<=N-i;rentaldays++) {
                sum+= costs[rentaldays-1+i];
                avr = (double)sum / rentaldays;
                if(min>avr) {
                    min=avr;
                }
            avr = (double)sum / rentaldays; 
            }
    
        }
        answer[cnt]= min;
        cnt++;
    } 
    for(i=0;i<T;i++) {
        printf("%.7f\n",answer[i]);
    }
    
    return 0;

    }


    10년 전
3개의 댓글이 있습니다.
  • Being
    Being

    우선 글 편집 화면에서 글쓰기 문법 안내를 보시고 코드를 보기 좋게 정돈해주시길 부탁드립니다 :)


    10년 전 link
  • Being
    Being

    그리고 대답하시는 분들의 시간을 빌리시는 것인 만큼 최대한 풀이의 의도를 설명해주시거나 하시면 더 빠른 대답을 받으실 수 있을 것 같네요!


    10년 전 link
  • htamop
    htamop

    예 참고하겠습니다. 감사합니다 !!
    문제는 해결했습니다.


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