AC <?php // Run Time(ms) 0 // Run Memory(KB) 212 $arr = array(); for($ii = 0; $ii < 16; $ii++){ fscanf(STDIN, "%d%d%d", $arr[$ii]['R'], $arr[$ii]['G'], $arr[$ii]['B']); } while( fscanf(STDIN, "%d%d%d", $color['R'], $color['G'], $color['B']) <> NULL){ if($color['R'] == -1 && $color['G'] == -1 && $color['B'] == -1){ break; } $min = 765; $sub = -1; for($ii = 0; $ii < 16; $ii++){ $dis[$ii] = abs($color['R'] - $arr[$ii]['R']) + abs($color['G'] - $arr[$ii]['G']) + abs($color['B'] - $arr[$ii]['B']); if($min > $dis[$ii]) { $min = $dis[$ii]; $sub = $ii; } } $max = $min * 1.733; // 1.733 == sqrt(3) $rst = pow($color['R'] - $arr[$sub]['R'], 2) + pow($color['G'] - $arr[$sub]['G'], 2) + pow($color['B'] - $arr[$sub]['B'], 2); for($ii = 0; $ii < 16; $ii++){ if($dis[$ii] < $max && $ii <> $sub) { $tmp = pow($color['R'] - $arr[$ii]['R'], 2) + pow($color['G'] - $arr[$ii]['G'], 2) + pow($color['B'] - $arr[$ii]['B'], 2); if($tmp < $rst) { $rst = $tmp; $sub = $ii; } } } print "(".$color['R'].",".$color['G'].",".$color['B'].") maps to (".$arr[$sub]['R'].",".$arr[$sub]['G'].",".$arr[$sub]['B'].")/n"; } Key Point In 3 dimension, two points' distance should be more than (Δx + Δy + Δz) / sqrt(3)