/** @JUDGE_ID: GOKURI_SQUEEZE ??? C++ */ #include #include #include #include #include #include #include #include using namespace std; #define FNAME "triangle.txt" #define cin fin struct trgl { int id; int num[3]; void rotate() { int tmp = num[0]; num[0] = num[1]; num[1] = num[2]; num[2] = tmp; } }; bool operator< (const trgl& a, const trgl& b) { return a.id < b.id; } int solve(vector& prob, int pos) { int result = INT_MIN; if(pos >= prob.size()) { // check consistency result = 0; for(int i = 0; i < prob.size(); i++) { const int j = (i + 1) % prob.size(); //cout << "chk" << prob[i].num[0] << " " << prob[j].num[1] << endl; if(prob[i].num[0] != prob[j].num[1]) return INT_MIN; result += prob[i].num[2]; } return result; } int c; if((c = solve(prob, pos + 1)) > result) result = c; prob[pos].rotate(); if((c = solve(prob, pos + 1)) > result) result = c; prob[pos].rotate(); if((c = solve(prob, pos + 1)) > result) result = c; prob[pos].rotate(); return result; } int main() { ifstream fin(FNAME); if(!fin) return -1; char nxt; do { int a, b, c; vector prob; for(int i = 0; i < 6; i++) { trgl t; t.id = i; cin >> t.num[0] >> t.num[1] >> t.num[2]; prob.push_back(t); } int result = INT_MIN; do { int v = solve(prob, 0); if(v > result) result = v; } while(next_permutation(prob.begin(), prob.end())); if(result < 0) cout << "none" << endl; else cout << result << endl; } while(cin >> nxt, nxt == '*'); return 0; }