精華區beta Marginalman 關於我們 聯絡資訊
機掰 今天這題我之前用c寫過 我看到笑死 怎麼這麼雞巴又長又醜 邏輯跟現在差不多 給你們看一下 typedef struct { int pos; int hp; char dir; int num; } robot; int cmp (const void * a, const void * b) { return ( *(int*)a - *(int*)b ); } int cmp2 (const void * a, const void * b) { return ( ((robot*)a)->num - ((robot*)b)->num ); } int* survivedRobotsHealths(int* positions, int positionsSize, int* healths, int healthsSize, char * directions, int* returnSize) { robot relaxing234[100000] = {}; for(int i = 0 ; i < positionsSize ; i ++) { relaxing234[i].pos = positions[i]; relaxing234[i].hp = healths[i]; relaxing234[i].dir = directions[i]; relaxing234[i].num = i; } qsort(relaxing234 , positionsSize , sizeof(robot) , cmp); robot stack[100000] = {}; int top = 0; for(int i = 0 ; i < positionsSize ; i++) { if(relaxing234[i].dir == 'R') { stack[top] = relaxing234[i]; top++; } else if(relaxing234[i].dir == 'L') { if(top == 0) { stack[top] = relaxing234[i]; top++; } else if((top != 0)&&(stack[top-1].dir == 'L')) { stack[top] = relaxing234[i]; top++; } else if((top != 0)&&(stack[top-1].dir == 'R')) { if(stack[top-1].hp > relaxing234[i].hp) { stack[top-1].hp --; } else if(stack[top-1].hp == relaxing234[i].hp) { top --; } else if(stack[top-1].hp < relaxing234[i].hp) { int test = 0; while(1) { if((top != 0)&&(stack[top-1].hp > relaxing234[i].hp)&&(s tack[top-1].dir=='R')) { stack[top-1].hp --; break; } else if((top != 0)&&(stack[top-1].hp == relaxing234[i].h p)&&(stack[top-1].dir=='R')) { top --; break; } else if((top != 0)&&(stack[top-1].hp < relaxing234[i].hp )&&(stack[top-1].dir=='R')) { stack[top-1] = relaxing234[i]; stack[top-1].hp --; relaxing234[i].hp --; top --; } if((top == 0)||(stack[top-1].dir=='L')) { stack[top] = relaxing234[i]; top++; break; } } } } } } *returnSize = top; robot *map = malloc(sizeof(robot)*top); int *amap = malloc(sizeof(int)*top); int *wtf = malloc(sizeof(int)*0); if(top == 0)return wtf; for(int i = 0 ; i < top ; i ++) { map[i] = stack[i]; } qsort(map , top , sizeof(robot) , cmp2); for(int i = 0 ; i < top ; i ++) { amap[i] = map[i].hp; } if(top == 0)return wtf; return amap; } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.162.13.212 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1720849492.A.1F3.html
CanIndulgeMe: 芋圓是技術大神 07/13 13:45
Smallsh: 大師 07/13 13:48