結果
問題 | No.193 筒の数式 |
ユーザー |
![]() |
提出日時 | 2015-04-26 22:28:47 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 4,690 bytes |
コンパイル時間 | 1,292 ms |
コンパイル使用メモリ | 161,260 KB |
実行使用メモリ | 6,948 KB |
最終ジャッジ日時 | 2024-07-05 03:00:44 |
合計ジャッジ時間 | 1,942 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 11 WA * 5 |
ソースコード
#define _CRT_SECURE_NO_WARNINGS//#define _GLIBCXX_DEBUG#include <bits/stdc++.h>using namespace std;typedef long long ll;//#define int ll//#define endl "\n"typedef vector<int> vi;typedef vector<vi> vvi;typedef pair<int,int> pii;#define all(c) (c).begin(), (c).end()#define loop(i,a,b) for(ll i=a; i<ll(b); i++)#define rep(i,b) loop(i,0,b)#define pb push_back#define eb emplace_back#define mp make_pair#define mt make_tupletemplate<class T> ostream & operator<<(ostream & os, vector<T> const &);template<int n, class...T> typename enable_if<(n>=sizeof...(T))>::type _ot(ostream &, tuple<T...> const &){}template<int n, class...T> typename enable_if<(n< sizeof...(T))>::type _ot(ostream & os, tuple<T...> const & t){ os << (n==0?"":" ") << get<n>(t);_ot<n+1>(os, t); }template<class...T> ostream & operator<<(ostream & os, tuple<T...> const & t){ _ot<0>(os, t); return os; }template<class T, class U> ostream & operator<<(ostream & os, pair<T,U> const & p){ return os << "(" << p.first << ", " << p.second << ") "; }template<class T> ostream & operator<<(ostream & os, vector<T> const & v){ rep(i,v.size()) os << v[i] << (i+1==(int)v.size()?"":" "); return os; }template<class T> inline bool chmax(T & x, T const & y){ return x<y ? x=y,true : false; }template<class T> inline bool chmin(T & x, T const & y){ return x>y ? x=y,true : false; }#ifdef DEBUG#define dump(...) (cerr<<#__VA_ARGS__<<" = "<<mt(__VA_ARGS__)<<" ["<<__LINE__<<"]"<<endl)#else#define dump(...)#endif// ll const mod = 1000000007;// ll const inf = 1LL<<60;// Verify : http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=1102#include <iostream>#include <cctype>#include <cstdio>#include <string>#include <algorithm>#include <vector>#include <complex>using namespace std;char e[1000];typedef long long ll;typedef complex<ll> C;inline bool valid(C x){ll t = max(abs(x.real()),abs(x.imag()));return t <= 1000000000000000LL;}class OverFlow {};C expr(char* &p);C term(char* &p);C fact(char* &p);C num(char* &p);inline bool ispm(char c){return c=='+' || c=='-';}inline bool ispd(char c){return c=='*' || c=='/';}C num(char* &p){C res = 0;if(isdigit(*p) || *p == 'i'){;}else{throw "num begin";}if(isdigit(*p)){while (isdigit(*p)){res*=10;res+=*p-'0';if(!valid(res)) throw OverFlow();p++;}}else{res = C(0,1);p++;}if(*p=='\0' || *p==')' || ispm(*p) || ispd(*p)){;}else{throw "num end";}if(!valid(res)) throw OverFlow();return res;}C fact(char* & p){C res = 0;if(*p=='(' || isdigit(*p) || *p == 'i'){;}else{throw "fact begin";}if(*p=='('){p++;res += expr(p);p++;}else if(isdigit(*p) || *p == 'i'){res += num(p);}if(*p=='\0' || *p==')' || ispm(*p) || ispd(*p)){;}else{cout << p-e << endl;throw "fact end";}if(!valid(res)) throw OverFlow();return res;}C term(char* & p){C res;if(*p=='(' || isdigit(*p) || *p == 'i'){res = fact(p);}else{throw "term begin";}while(1){if(*p=='*'){p++;res *= fact(p);}else if(*p=='/'){p++;res /= fact(p);}else if(*p=='\0' || *p==')' || *p=='+' || *p=='-'){break;}else{throw "term end";}if(!valid(res)) throw OverFlow();}if(!valid(res)) throw OverFlow();return res;}C expr(char* & p){C res;if(*p=='(' || isdigit(*p) || *p == 'i'){res=term(p);}else{throw "exp begin";}while(1){if(*p=='+'){p++;res += term(p);}else if(*p=='-'){p++;res -= term(p);}else if(*p=='\0' || *p==')'){break;}else{throw "exp end";}if(!valid(res)) throw OverFlow();}return res;}signed main(){ios_base::sync_with_stdio(0); cin.tie(0);string s;while(cin >> s){int n = s.size();int ans = 0;rep(i,n) s += s[i];rep(i,n){rep(j,n) e[j] = s[i+j];e[n] = 0;try {char * p = e;if(*p=='+' || *p=='-') throw "";if(*(p+n-1)=='+' || *(p+n-1)=='-') throw "";int x = expr(p).real();ans = max(x,ans);} catch(...){}}cout << ans << endl;}}