結果
| 問題 |
No.297 カードの数式
|
| コンテスト | |
| ユーザー |
kongarishisyamo
|
| 提出日時 | 2016-06-07 18:39:56 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
MLE
|
| 実行時間 | - |
| コード長 | 1,377 bytes |
| コンパイル時間 | 906 ms |
| コンパイル使用メモリ | 63,756 KB |
| 実行使用メモリ | 534,504 KB |
| 最終ジャッジ日時 | 2024-10-08 18:03:31 |
| 合計ジャッジ時間 | 3,669 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 1 MLE * 1 -- * 21 |
ソースコード
#include<iostream>
#include<cstdio>
#include<vector>
#include<string>
using namespace std;
#define NMAX 15
#define INF 10000000000000000
vector<string> vsiki;
long long N;
long long minn,maxn;
char c[NMAX];
bool f[NMAX];
void make_siki(int n,string siki){
if(n==0) vsiki.push_back(siki);
for(int i=0;i<N;i++){
if(f[i]){
f[i]=false;
string tmps=siki;
tmps+=c[i];
make_siki(n-1,tmps);
f[i]=true;
}
}
}
int main(){
cin>>N;
for(int i=0;i<N;i++){
cin>>c[i];
f[i]=true;
}
make_siki(N,"");
maxn=-INF;
minn=INF;
for(int i=0;i<vsiki.size();i++){
int sum,j;
string nums="";
char en;
for(j=0;;j++){
if(vsiki[i][j]=='+'||vsiki[i][j]=='-') break;
else nums+=vsiki[i][j];
}
if(j!=0&&j!=vsiki[i].size()-1&&vsiki[i][j+1]!='+'&&vsiki[i][j+1]!='-'){
sum=atoi(nums.c_str());
en=vsiki[i][j];
nums="";
j++;
for(;j<vsiki[i].size();j++){
if(vsiki[i][j]=='+'||vsiki[i][j]=='-'){
if(nums==""){
nums="NOT";
break;
}
if(en=='+') sum+=atoi(nums.c_str());
if(en=='-') sum-=atoi(nums.c_str());
nums="";
en=vsiki[i][j];
}
else nums+=vsiki[i][j];
}
if(nums=="") nums="NOT";
if(nums!="NOT"){
if(en=='+') sum+=atoi(nums.c_str());
if(en=='-') sum-=atoi(nums.c_str());
if(maxn<sum) maxn=sum;
if(minn>sum) minn=sum;
}
}
}
cout<<maxn<<" "<<minn<<endl;
}
kongarishisyamo