Skip to content

Instantly share code, notes, and snippets.

@takageymt
Created October 29, 2016 17:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save takageymt/ede39279d7e8ee51a832105b2ab4f691 to your computer and use it in GitHub Desktop.
Save takageymt/ede39279d7e8ee51a832105b2ab4f691 to your computer and use it in GitHub Desktop.
int solve(int i, int bit, string N)
{
if(i == N.size()) return 0;
int ret = solve(i+1, bit, N);
reps(j, i+1, N.size()) reps(k, j+1, N.size()) {
if(N[i] != '0' && N[j] == N[k]) {
if((bit >> i)&1 || (bit >> j)&1 || (bit >> k)&1) continue;
string s = ""; s += N[i]; s += N[j]; s += N[k];
int next = bit | (1<<i) | (1<<j) | (1<<k);
int tmp = solve(i+1, next, N);
ret = max(ret, tmp + stoi(s));
}
}
return ret;
}
int main()
{
string N; cin >> N;
cout << solve(0, 0, N) << endl;
return 0;
}
@takageymt
Copy link
Author

commit

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment