結果
問題 | No.437 cwwゲーム |
ユーザー | beet |
提出日時 | 2016-10-28 22:56:35 |
言語 | C++11 (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 2 ms / 2,000 ms |
コード長 | 660 bytes |
コンパイル時間 | 1,433 ms |
コンパイル使用メモリ | 160,568 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-10-12 08:23:58 |
合計ジャッジ時間 | 2,591 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 41 |
ソースコード
#include<bits/stdc++.h> using namespace std; int dp[1<<15]; 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; }