結果
問題 | No.437 cwwゲーム |
ユーザー | ukuku09 |
提出日時 | 2016-10-28 23:52:48 |
言語 | C++11 (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 2 ms / 2,000 ms |
コード長 | 1,143 bytes |
コンパイル時間 | 1,339 ms |
コンパイル使用メモリ | 162,004 KB |
実行使用メモリ | 6,824 KB |
最終ジャッジ日時 | 2024-10-12 08:26:34 |
合計ジャッジ時間 | 2,520 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 41 |
ソースコード
#include <bits/stdc++.h> using namespace std; using ll = long long; using Pi = pair<int, int>; using Pl = pair<ll, ll>; using Ti = tuple<int, int, int>; using Tl = tuple<ll, ll, ll>; #define pb push_back #define eb emplace_back #define mp make_pair #define mt make_tuple #define F first #define S second #define Get(t, i) get<(i)>((t)) #define all(v) (v).begin(), (v).end() #define rep(i, n) for(int i = 0; i < (int)(n); i++) #define reps(i, f, n) for(int i = (int)(f); i < (int)(n); i++) #define each(a, b) for(auto& a : b) const int inf = 1 << 25; const ll INF = 1LL << 55; 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[i] != N[j] && 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; }