저는 100 나오네요.
2512번 - 예산
#include<stdio.h>
int main() {
int arr[111111]={0,};
int M,N,i,temp,max=0,real_amount=0;
scanf("%d", &N);
for(i=0; i<N; i++) {
scanf("%d", &temp);
real_amount+=temp;
arr[temp] += 1;
if(max<=temp) max=temp;
// if(min>=temp) min=temp;
}
scanf("%d", &M);
while(1) {
if(real_amount >= M) {
real_amount -= arr[max];
max = max-1;
arr[max] += arr[max+1];
arr[max+1] = 0;
} if(real_amount <= M) break;
}
printf("%d\n", max);
return 0;
}
흠... 이 글에 쓰여있는 테스트 케이스 돌려서 다 맞았는데 시간초과 안뜨는데 왜 뭐가 틀렸을까요,, 역시 정답률 29 ㅠㅠ
신기한 풀이라 저도 왜 틀린지는 잘 모르겠는데 일단 오류 케이스가 하나 있네요.
3
100 100 100
300
if(real_amount >= M)
이것이
if(real_amount > M)
이렇게 되야 고쳐지네요.
그런데 고쳐도 틀림이 뜬다는 함정이..
댓글을 작성하려면 로그인해야 합니다.
yukariko 9년 전 1
다음 테스트 케이스에 대해 어떤 결과가 나오는지 궁금합니다.
3
1 1 100
10000
제 생각은 10000이 나와야 하는데 혹시나 해서 질문드립니다.