Go to diff to previous submission
#include <stdio.h> #include <string.h> #define false 0 #define true 1 char inv(char c){ return c=='L' ? 'R' : 'L'; } int main( int agrc, char * argv[] ) { char array[100002],c, remL, remR; int i, wood=10, ants, coo, remaining, pL, pR, timeL, timeR; int waitL, waitR; int distL, distR, distLast; int max=-1, len; waitL = false; waitR = false; pL = wood; pR = 0; max = -1; for( i = 0 ; i < ants ; i++ ) { array[coo] = c; if(coo > pR) pR = coo; if(coo < pL) pL = coo; } remaining = ants; remL = 'L'; remR = 'R'; timeL = 0; timeR = wood; len = 0; while(timeL < wood) { if(array[timeL] == 'R'){ max = wood-len; break; } timeL++; len++; } len = 0; while(timeR >= 0) { if(array[timeR] == 'L'){ if(wood-len>max) max = wood-len; break; } timeR--; len++; } distL = -1; distR = -1; while(remaining && pL <= pR) { if(waitL == false){ while(array[pL] == ' ') pL++; if(array[pL] == remL){ remaining--; array[pL] = ' '; distL = pL; distLast = distL; pL++; } else if(array[pL] == inv(remL)) { remL = inv(remL); if(waitR == false) waitL = true; waitR = false; } } if(waitR == false && remaining){ while(array[pR] == ' ') pR--; if(array[pR] == remR){ remaining--; array[pR] = ' '; distR = pR; distLast = distR; pR--; } else if(array[pR] == inv(remR)){ remR = inv(remR); if(waitL == false) waitR = true; waitL = false; } } /*for( i = 0 ; i < wood ; i++ ) printf("%c", array[i]); printf(", rem: %c %c, p: %2d %2d, wait: %d %d, remaining: %d\n", remL, remR, pL, pR, waitL, waitR, remaining);*/ } while(array[pL] == ' ') pL++; while(array[pR] == ' ') pR--; /*printf("%d and %d\n", distL, distR); distL = array[pL] == ' ' ? wood+123 : pL; distR = array[pL] == ' ' ? wood+123 : wood-pR;*/ if(distR > -1 && distL > -1 && (distL == wood-distR)){ } else if(distR > -1 && (wood-distR > distL)){ } else { } } return 0; }