結果
| 問題 |
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;
}
ukuku09