class Solution { public: string largestTimeFromDigits(vector<int>& A) { vector<bool> used(4,false); vector<int> result; for(int i=0;i<A.size();i++){ if(A[i]<0 || A[i]>2) continue; int t1 = A[i]; used[i] = true; for(int j=0;j<A.size();j++){ if(used[j] || (t1==2 && (A[j]>3 || A[j]<0) ) ) continue; int t2 = t1*10 + A[j]; used[j] = true; for(int k=0;k<A.size();k++){ if(used[k] || A[k]>5 || A[k]<0) continue; int t3 = t2*10 + A[k]; used[k] = true; for(int y=0;y<A.size();y++){ if(used[y]) continue; result.push_back(t3*10+A[y]); // cout<<t3*10+A[y]<<endl; } used[k] = false; } used[j] = false; } used[i] = false; } if(result.empty()) return ""; vector<int>::iterator it = max_element(result.begin(), result.end()); string r = to_string(*it); if(r.size()<4) r = string(4-r.size(),'0') + r; return r.substr(0,2) + ":" + r.substr(2); } };