結果
| 問題 |
No.297 カードの数式
|
| コンテスト | |
| ユーザー |
buko106
|
| 提出日時 | 2015-11-06 22:56:05 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 2,286 bytes |
| コンパイル時間 | 748 ms |
| コンパイル使用メモリ | 91,192 KB |
| 実行使用メモリ | 13,764 KB |
| 最終ジャッジ日時 | 2024-09-13 13:28:28 |
| 合計ジャッジ時間 | 3,193 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 1 TLE * 1 -- * 21 |
ソースコード
#include<cstdio>
#include<cstring>
#include<cctype>
#include<cmath>
#include<climits>
#include<algorithm>
#include<vector>
#include<valarray>
#include<string>
#include<set>
#include<map>
#include<stack>
#include<queue>
#include<iostream>
using namespace std;
#define rep(i,n) for(int i=0;i<n;i++)
#define REP(i,n) for(int i=1;i<=n;i++)
#define drep(i,n) for(int i=n-1;i>=0;i--)
#define DREP(i,n) for(int i=n;i>0;i--)
#define Rep(i,m,n) for(int i=m;i<n;i++)
#define ReP(i,m,n) for(int i=m;i<=n;i++)
#define scani(a) scanf("%d",&a)
#define scand(a) scanf("%lf",&a)
#define scans(s) scanf("%s",s)
#define readi(a) int a;scanf("%d",&a)
#define printi(a) printf("%d",a)
#define prints(s) printf("%s",s)
#define even(n) (((n)+1)%2)
#define odd(n) ((n)%2)
#define sg(x) ((x)?1:0)
#define LF printf("\n")
#define SPACE printf(" ")
#define pb push_back
#define mp make_pair
#define bs binary_search
#define all(a) (a).begin(),(a).end()
#define forall(itr,a) for(auto itr=a.begin();itr!=a.end();++itr)
#define MOD 1000000007
typedef long long LL;
typedef vector<int> vi;
typedef vector<vector<int> > vvi;
typedef pair<double,double> pdd;
typedef pair<int,int> pii;
const double pi=acos(-1.0);
double rad(double t){return t*pi/180.0;}
double deg(double d){return d*180.0/pi;}
int GCD(int x,int y){if(x<y)swap(x,y);return x%y?GCD(y,x%y):y;}
int LCM(int x,int y){return x/GCD(x,y)*y;}
inline LL evaluation(string s){
char S[100];
strcpy(S,s.c_str());
LL ret=atoll(S);
int pos=0,n=s.size();
while(true){
while(S[pos]!='+'&&S[pos]!='-'){
pos++;
if(pos==n)return ret;
}
char op=S[pos];
pos++;
if(op=='+'){
ret += atoll(S+pos);
}else{
ret -= atoll(S+pos);
}
}
}
inline bool check(string s){
int n=s.size();
if(s[0]=='+'||s[0]=='-')return false;
if(s[n-1]=='+'||s[n-1]=='-')return false;
rep(i,n-1){
if((s[i]=='+'||s[i]=='-')&&(s[i+1]=='+'||s[i+1]=='-'))return false;
}
return true;
}
int main(){
int n;cin >> n;
string S;
rep(i,n){
char c;
cin >> c;
S.pb(c);
}
sort(all(S));
LL m=pow(10,14),M=-pow(10,14);
do{
if(!check(S))continue;
LL ans=evaluation(S);
m=min(m,ans);
M=max(M,ans);
}while(next_permutation(all(S)));
cout << M << ' ' << m << endl;
return 0;
}
buko106