結果
問題 |
No.437 cwwゲーム
|
ユーザー |
![]() |
提出日時 | 2016-10-28 22:55:58 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
RE
|
実行時間 | - |
コード長 | 660 bytes |
コンパイル時間 | 1,144 ms |
コンパイル使用メモリ | 158,700 KB |
実行使用メモリ | 6,820 KB |
最終ジャッジ日時 | 2024-11-24 06:10:08 |
合計ジャッジ時間 | 2,321 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 40 RE * 1 |
ソースコード
#include<bits/stdc++.h> using namespace std; int dp[1<<12]; string s; int n; int rec(int b){ if(~dp[b]) return dp[b]; int res=0,i,j,k; for(i=0;i<n;i++){ if(b>>i&1) continue; if(s[i]=='0') continue; for(j=i+1;j<n;j++){ if(b>>j&1) continue; for(k=j+1;k<n;k++){ if(b>>k&1) continue; if(s[i]!=s[j]&&s[j]==s[k]){ //printf("%d %d %d\n",i,j,k); //printf("%c %c %c\n",s[i],s[j],s[k]); res=max(res, rec((b|(1<<i)|(1<<j)|(1<<k))) +(s[i]-'0')*100+(s[j]-'0')*10+(s[k]-'0')); } } } } return dp[b]=res; } int main(){ cin>>s; memset(dp,-1,sizeof(dp)); n=s.size(); cout << rec(0) << endl; return 0; }