結果
問題 | No.437 cwwゲーム |
ユーザー |
![]() |
提出日時 | 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;}