結果

問題 No.297 カードの数式
ユーザー buko106buko106
提出日時 2015-11-06 22:56:05
言語 C++11
(gcc 11.4.0)
結果
TLE  
実行時間 -
コード長 2,286 bytes
コンパイル時間 688 ms
コンパイル使用メモリ 91,240 KB
実行使用メモリ 8,704 KB
最終ジャッジ日時 2023-10-11 14:47:57
合計ジャッジ時間 3,194 ms
ジャッジサーバーID
(参考情報)
judge13 / judge11
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 1 ms
8,704 KB
testcase_01 AC 1 ms
4,356 KB
testcase_02 AC 2 ms
4,348 KB
testcase_03 AC 1 ms
4,348 KB
testcase_04 TLE -
testcase_05 -- -
testcase_06 -- -
testcase_07 -- -
testcase_08 -- -
testcase_09 -- -
testcase_10 -- -
testcase_11 -- -
testcase_12 -- -
testcase_13 -- -
testcase_14 -- -
testcase_15 -- -
testcase_16 -- -
testcase_17 -- -
testcase_18 -- -
testcase_19 -- -
testcase_20 -- -
testcase_21 -- -
testcase_22 -- -
testcase_23 -- -
testcase_24 -- -
testcase_25 -- -
権限があれば一括ダウンロードができます

ソースコード

diff #

#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;
}
0