http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1067
#include <stdio.h> struct color { int R, G, B; }map[16]; int main() { int i = 0; for (i = 0; i < 16; i++) scanf("%d%d%d", &map[i].R, &map[i].G, &map[i].B); struct color c; while(scanf("%d%d%d", &c.R, &c.G, &c.B) && c.R >=0 ) { int index = 0; int min = 65535; for (i = 0; i < 16; i++) { int d = (c.R - map[i].R)*(c.R - map[i].R) + (c.G - map[i].G)*(c.G - map[i].G) + (c.B - map[i].B)*(c.B - map[i].B); if (min > d) { min = d; index = i; } } printf("(%d,%d,%d) maps to ", c.R, c.G, c.B); printf("(%d,%d,%d)\n", map[index].R, map[index].G, map[index].B); } return 0; }