Ranking (as of 2013-08-03): 128 out of 704
Language: C++
/* UVa 11218 - KTV To build using Visual Studio 2008: cl -EHsc -O2 ktv.cpp */ #include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { for (int c = 1; ; c++) { int n; cin >> n; if (!n) break; vector<int> combinations(n, 0); // combinations[i] is the i-th combination in which // bits corresponding to three people are set vector<int> scores(n); for (int i = 0; i < n; i++) { for (int j = 0; j < 3; j++) { int k; cin >> k; combinations[i] |= 1 << (k - 1); } cin >> scores[i]; } int max_score = -1; for (int i = 0; i < n; i++) { int cm = combinations[i], s = scores[i]; for (int j = i + 1; j < n; j++) { if (cm & combinations[j]) continue; cm |= combinations[j]; s += scores[j]; for (int k = j + 1; k < n; k++) { if (cm & combinations[k]) continue; max_score = max(max_score, s + scores[k]); } cm &= ~combinations[j]; s -= scores[j]; } } cout << "Case " << c << ": " << max_score << endl; } return 0; }
No comments:
Post a Comment