結果
問題 | No.437 cwwゲーム |
ユーザー |
![]() |
提出日時 | 2016-11-13 21:43:51 |
言語 | C++11 (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 3 ms / 2,000 ms |
コード長 | 2,929 bytes |
コンパイル時間 | 1,423 ms |
コンパイル使用メモリ | 161,508 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-10-12 08:39:27 |
合計ジャッジ時間 | 2,779 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 41 |
ソースコード
#include <bits/stdc++.h> #include<iostream> #include<cstdio> #include<vector> #include<queue> #include<map> #include<cstring> #include<string> #include <math.h> #include<algorithm> // #include <boost/multiprecision/cpp_int.hpp> #include<functional> #define int long long #define inf 1000000007 #define pa pair<int,int> #define ll long long #define pal pair<ll,ll> #define ppa pair<int,pa> #define mp make_pair #define EPS (1e-10) #define equals(a,b) (fabs((a)-(b))<EPS) using namespace std; class Point{ public: double x,y; Point(double x=0,double y=0):x(x),y(y) {} Point operator + (Point p) {return Point(x+p.x,y+p.y);} Point operator - (Point p) {return Point(x-p.x,y-p.y);} Point operator * (double a) {return Point(x*a,y*a);} Point operator / (double a) {return Point(x/a,y/a);} double absv() {return sqrt(norm());} double norm() {return x*x+y*y;} bool operator < (const Point &p) const{ return x != p.x ? x<p.x: y<p.y; } bool operator == (const Point &p) const{ return fabs(x-p.x)<EPS && fabs(y-p.y)<EPS; } }; typedef Point Vector; struct Segment{ Point p1,p2; }; double hen(Vector a){ if(fabs(a.x)<EPS && a.y>0) return acos(0); else if(fabs(a.x)<EPS && a.y<0) return 3*acos(0); else if(fabs(a.y)<EPS && a.x<0) return 2*acos(0); else if(fabs(a.y)<EPS && a.x>0) return 0.0; else if(a.y>0) return acos(a.x/a.absv()); else return 2*acos(0)+acos(-a.x/a.absv()); } int gcd(int v,int b){ if(v>b) return gcd(b,v); if(v==b) return b; if(b%v==0) return v; return gcd(v,b%v); } double dot(Vector a,Vector b){ return a.x*b.x+a.y*b.y; } double cross(Vector a,Vector b){ return a.x*b.y-a.y*b.x; } //----------------kokomade temple------------ int x,y,n,m; string s; int keta[10]={0}; int solve(string d){ if(d.length()<3) return 0; int l=d.length(); int u=0; for(int i=0;i<l;i++)for(int j=i+1;j<l;j++) for(int k=j+1;k<l;k++){ if(d[j]!= d[k]) continue; if(d[i]=='0') continue; if(d[i]==d[j]) continue; int r=0; r += 100*(d[i]-'0')+10*(d[j]-'0')+(d[k]-'0'); string dd=""; for(int b=0;b<l;b++) if(b!= i &&b!= j&& b!= k ) dd += d.substr(b,1); u=max(u,r+solve(dd)); } return u; } signed main(){ cin>>s; cout<<solve(s)<<endl; // printf("%.10f\n",ans); return 0; }