모처럼, 인형문제를 시뮬레이션이 안된다고 해서, 중간고사도 끝났겠다. 너 잘걸렸다 싶어서,
오늘 하루종일 붙잡아서 겨우 부득부득 이를 갈면서 풀어냈습니다...ㅋㅋㅋㅋㅋㅋㅋㅋ
근데... 이걸 올리고 컴파일이란녀석을 시켜봤더니 런타임에러라는 말이 왠말입니까;;;
스트럭쳐구문에 대한 포인터가 안먹히는건가요???...
너무 답답해서 돌아가시겠어요...;ㄴ;
한번은, 설마.. 싶어서 std::cin으로 돌린것들 모두 scanf로 갈아치워주고... 그래도 작동을 안해요...=_=;;;
Cout쪽도 갈아줘야 하는건지;;;(어짜피 요건 Call by Reference라서 상관없잖아요;;)
아님 스트럭쳐 포인터가 안먹힌다면, 어떻게 이놈을 설정해야 한다는건지...
누가 제 소스에서 메모리 참조 에러가 날만한 부분을 분석해주실 수 있으신가염?ㅠ_ㅠ
#include <iostream>#include <cstdio>#define MAX 100000usingnamespacestd;typedefstruct_arr{intval;intidx;}data;voidmerge(int,int,data*);voidprogram();intmain(){intcasen;scanf("%d",&casen);while(casen--){program();}return0;}voidmerge(intleft,intright,data*arr){if((right-left)==1)return;inthalf=(left+right)/2;merge(left,half,arr);merge(half,right,arr);inti=left;intj=half;intk=left;datatemp[MAX];while(i<half&&j<right){if(arr[i].val<arr[j].val){temp[k].val=arr[i].val;temp[k++].idx=arr[i++].idx;}else{temp[k].val=arr[j].val;temp[k++].idx=arr[j++].idx;}}while(i<half){temp[k].val=arr[i].val;temp[k++].idx=arr[i++].idx;}while(j<right){temp[k].val=arr[j].val;temp[k++].idx=arr[j++].idx;}for(i=left;i<right;i++){arr[i].val=temp[i].val;arr[i].idx=temp[i].idx;}}voidprogram(){inttype=0,g_doll=0;intremain=0;dataarr[MAX];inttotal=0;intused[MAX]={0};inttemp;scanf("%d %d",&type,&g_doll);remain=g_doll;for(inti=0;i<type;i++){scanf("%d",&arr[i].val);arr[i].idx=i;total+=arr[i].val;}merge(0,type,arr);for(inti=0;i<type;i++){if(arr[i].val*type<=g_doll){used[arr[i].idx]=arr[i].val;remain-=arr[i].val;if(arr[i].val*type<g_doll){g_doll+=((g_doll/type)+(g_doll%type?1:0)-(arr[i].val))/type;}continue;}used[arr[i].idx]=g_doll/type;remain-=g_doll/type;temp=i;}used[arr[temp].idx]+=(remain<arr[temp].val?remain:arr[temp].val);for(inti=0;i<type;i++){cout<<used[i]<<" ";}cout<<endl;}~~~<div>[이글은과거홈페이지에서이전된글입니다.<ahref="http://algospot.andromeda-express.com/zbxe/qna/58277">원문보기</a>]</div>
관리자 권한으로 코드를 보기 편하도록 본문을 수정하였습니다. ^^;
일단 런타임 에러는 함수 내에서 잡고 있는 로컬 변수의 크기가 너무 커서 생기는 stack oveflow 때문인것 같습니다.
merge와 program 함수 내에 있는 data arr[MAX], data temp[MAX], int used[MAX] 를 전역으로 잡고 보내보니 wrong answer가 나오네요.
공상가
모처럼, 인형문제를 시뮬레이션이 안된다고 해서, 중간고사도 끝났겠다. 너 잘걸렸다 싶어서,
오늘 하루종일 붙잡아서 겨우 부득부득 이를 갈면서 풀어냈습니다...ㅋㅋㅋㅋㅋㅋㅋㅋ
근데... 이걸 올리고 컴파일이란녀석을 시켜봤더니 런타임에러라는 말이 왠말입니까;;;
스트럭쳐구문에 대한 포인터가 안먹히는건가요???...
너무 답답해서 돌아가시겠어요...;ㄴ;
한번은, 설마.. 싶어서 std::cin으로 돌린것들 모두 scanf로 갈아치워주고... 그래도 작동을 안해요...=_=;;;
Cout쪽도 갈아줘야 하는건지;;;(어짜피 요건 Call by Reference라서 상관없잖아요;;)
아님 스트럭쳐 포인터가 안먹힌다면, 어떻게 이놈을 설정해야 한다는건지...
누가 제 소스에서 메모리 참조 에러가 날만한 부분을 분석해주실 수 있으신가염?ㅠ_ㅠ
15년 전