360第二题 求大佬看看对不对
int main() {
int p; cin >> p; vector res; for(int q = 0; q < p; q++) { int ans = 0,r,g,b; vector rgb; cin >>r>>g>>b; rgb.push_back(r); rgb.push_back(g); rgb.push_back(b); sort(rgb.begin(),rgb.end()); while((rgb[0]+rgb[1]+rgb[2]) > 2 && (rgb[1]>0)) { //if(rgb[0] > rgb[1] || rgb[1] > rgb[2]) sort(rgb.begin(),rgb.end()); if(rgb[0] == 1 && rgb[1] == 1 && rgb[2] == 1) { ans++; break; } if(rgb[0] == 0) { if(rgb[2]/2 >= rgb[1]) ans+= rgb[1]; else ans += rgb[2]/2; break; } else if(rgb[1] == rgb[2]) { if((rgb[1]/2) >= rgb[0]) { ans += rgb[0]; rgb[0] = 0; rgb[1] -= rgb[0] * 2; }else { int tt = rgb[1]/2; ans += tt; rgb[0] -= tt; rgb[1] -= tt*2; } } else { if((rgb[2] - rgb[1])/2 >= rgb[0]) { ans+= rgb[0]; rgb[2] -= rgb[0]*2; rgb[0] = 0; } else { int tt = (rgb[2] - rgb[1]+1)/2; ans += tt; rgb[0] -= tt; rgb[2] -= 2*tt; } } } res.push_back(ans); } for(int q = 0; q < p; q++) { cout<<res[q]<<endl; } return 0;
}
#实习#