*
점수를 n개의 동적 배열에 입력한다.
입력 받은 점수를 오름차순으로 정렬한다.
i, tempIndex 두 개의 인덱스는 맨 앞과 맨 뒤에서 한 칸씩
전, 후진 하며 해당 값의 평균을 구한다.
평균 중 가장 큰 값을 출력한다.
*
#include <iostream>usingnamespacestd;voidq_sort(intnums[],intleft,intright);voidQuickSort(intnums[],intsize){q_sort(nums,0,size-1);}voidq_sort(intnumbers[],intleft,intright){if(left==right)return;intpivot,l_hold,r_hold;l_hold=left;r_hold=right;pivot=numbers[left];while(left<right){while((numbers[right]>=pivot)&&(left<right))right--;if(left!=right){numbers[left]=numbers[right];left++;}while((numbers[left]<=pivot)&&(left<right))left++;if(left!=right){numbers[right]=numbers[left];right--;}}numbers[left]=pivot;pivot=left;left=l_hold;right=r_hold;if(left<pivot)q_sort(numbers,left,pivot-1);if(right>pivot)q_sort(numbers,pivot+1,right);}floatGetAverage(floats1,floats2){return(s1+s2)/2;}intmain(){intt;// t <= 50intn;// 3 <= n <= 40cin>>t;while(t--){floatmaxScore=0;cin>>n;int*score=newint[n];for(inti=0;i<n;i++){cin>>score[i];// 0점 이상 100점 이하}QuickSort(score,n);inttempIndex=n-1;floattempScore=0;for(inti=0;i<n;i++){tempScore=GetAverage(score[i],score[tempIndex]);if(maxScore<tempScore){maxScore=tempScore;}tempIndex--;}cout<<fixed;cout.precision(1);cout<<maxScore;}}
firenin
YULO 선생님의 고민 문제입니다.
https://algospot.com/judge/problem/read/YULO
가장 큰 1등의 기대 점수를 얻는 문제입니다.
문제에 대한 접근이 잘못된건지, 다른 문제인건지 알 방법이 없어서
질문 남깁니다.
문제 접근은 아래와 같은 방식입니다.
*
점수를 n개의 동적 배열에 입력한다.
입력 받은 점수를 오름차순으로 정렬한다.
i, tempIndex 두 개의 인덱스는 맨 앞과 맨 뒤에서 한 칸씩
전, 후진 하며 해당 값의 평균을 구한다.
평균 중 가장 큰 값을 출력한다.
*
9년 전