#include <iostream>
#include <stdio.h>
#include <algorithm>
using namespace std;
int main()
{
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
int n, vald, valt, kald, kal[100];
scanf("%d",&n);
scanf("%d %d",&vald,&valt);
scanf("%d",&kald);
for(int i=0; i<n; i++)
scanf("%d",&kal[i]);
sort(kal, kal+n);
int ka=kald+kal[n-1];
int max=kald/vald,tmp=ka/vald+valt;
if(max<tmp)
max=tmp;
int num=2;
for(int i=n-2; i>=0; i--)
{
if(num>2)
break;
ka+=kal[i];
tmp=ka/vald+(valt*num);
if(max<tmp)
max=tmp;
num++;
}
printf("%d",max);
return 0;
}
제가 코드를 이렇게 짰는데요...
손으로 직접 이 코드를 실행해 보면서 풀었습니다. (손으로 풀 땐 맞더군요.)
그런데 채점기에서는 다 No good이 떴습니다.
어디서 잘못된 것일까요. ㅠㅠ 알려주시는 분 있으면 감사하겠습니다.
int max=kald/vald,tmp=ka/vald+valt;
여기에서 max 변수와 tmp변수 모두 1달러당 칼로리를 의미하는 것이면
tmp = ka / (vald+valt) 해야 할 듯하네요.
그리고 반복문에서도 마찬가지
tmp=ka/vald+(valt*num) 이 식은 1달러당 칼로리를 의미하는 식이 아닌 것 같은데...
특히 valt*num이 의미하는건 토핑을 도우에 올린만큼의 가격을 의미하는데...
문제에서 요구하는 것은 1달러당 칼로리의 합 중 최대값을 의미하는 것이니
총 칼로리의 합 / (사용된 토핑들의 가격 + 도우의 가격의 합) = 1달러당 칼로리