結果
| 問題 |
No.437 cwwゲーム
|
| コンテスト | |
| ユーザー |
10_oh_fu
|
| 提出日時 | 2016-10-28 23:31:04 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 1,516 bytes |
| コンパイル時間 | 934 ms |
| コンパイル使用メモリ | 87,700 KB |
| 実行使用メモリ | 5,248 KB |
| 最終ジャッジ日時 | 2024-11-24 06:25:26 |
| 合計ジャッジ時間 | 2,474 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 40 RE * 1 |
ソースコード
#include <cstdio>
#include <iostream>
#include <cmath>
#include <cstring>
#include <sstream>
#include <algorithm>
#include <cstdlib>
#include <map>
#include <queue>
#include <utility>
#include <vector>
#include <set>
#include <memory.h>
#include <iomanip>
#include <bitset>
#include <list>
#include <stack>
using namespace std;
#define mod 1000000007
int main()
{
long long int n;
cin >> n;
vector<int> a;
while(n != 0){
int tmp = n % 10;
a.push_back(tmp);
n = n / 10;
}
reverse(a.begin(), a.end());
int l = a.size();
int result[1 << 12] = {};
int ans = 0;
for(int i = 0; i < (1 << l); i++){
// cout << i << " : " ;
for(int j = 0; j < l; j++){
// もしj番目の数字をすでに使っていたら飛ばす
if((i & (1 << j)) != 0) continue;
for(int k = j + 1; k < l; k++){
if((i & (1 << k)) != 0) continue;
for(int m = k + 1; m < l; m++){
if((i & (1 << m)) != 0) continue;
int next = (i | (1 << j) | (1 << k) | (1 << m));
// cout << next << " & " << a[j] * 100 + a[k] * 10 + a[m] << " ";
if(a[k] == a[m] && a[j] != 0 && a[j] != a[k]) result[next] = max(result[next], result[i] + a[j] * 100 + a[k] * 10 + a[m]);
}
}
}
ans = max(ans, result[i]);
// cout << " : " << result[i] << endl;
}
cout << ans << endl;
return 0;
}
10_oh_fu