結果

問題 No.708 (+ー)の式
ユーザー @abcde
提出日時 2019-05-25 03:23:25
言語 C++14
(gcc 13.3.0 + boost 1.87.0)
結果
AC  
実行時間 2 ms / 2,000 ms
コード長 2,593 bytes
コンパイル時間 1,416 ms
コンパイル使用メモリ 170,844 KB
実行使用メモリ 6,944 KB
最終ジャッジ日時 2024-09-17 15:01:22
合計ジャッジ時間 1,997 ms
ジャッジサーバーID
(参考情報)
judge6 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 12
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

// subtask_7.txt, subtask_10.txt , WA, .
// -> if(befX == '#') ans = c; .
// -> (1-2)+(3-4) = -2 .
#include <bits/stdc++.h>
using namespace std;
int main(){
// 1. .
string S;
cin >> S;
// 2. .
int ans = 0;
vector<char> v;
bool isBracket = false;
char curX, befX = '#';
for(int i = 0; i < S.size(); i++){
curX = S[i];
// 2-1. , true .
if(curX == '('){
isBracket = true;
continue;
}
// 2-2. , false .
if(curX == ')'){
isBracket = false;
int c = 0;
char bef = '#';
for(auto &cur : v){
if(cur == '+' || cur == '-') bef = cur;
if(cur != '+' && cur != '-'){
if(bef == '#') c = (cur - '0');
if(bef == '+') c += (cur - '0');
if(bef == '-') c -= (cur - '0');
}
// cout << "cur=" << cur << " c=" << c << endl;
}
if(befX == '#') ans = c; // subtask_7.txt, subtask_10.txt WA.
if(befX == '+') ans += c;
if(befX == '-') ans -= c;
// cout << "isBracket=" << isBracket << " befX=" << befX << " curX=" << curX << " c=" << c << " ans=" << ans << endl;
// v .
v = vector<char>();
continue;
}
// 2-3. , or .
if(isBracket) v.push_back(curX);
if(!isBracket && curX != '+' && curX != '-'){
if(befX == '#') ans = (curX - '0');
if(befX == '+') ans += (curX - '0');
if(befX == '-') ans -= (curX - '0');
// cout << "isBracket=" << isBracket << " befX=" << befX << " curX=" << curX << " ans=" << ans << endl;
}
// 2-4. '+' or '-' .
if((curX == '+' || curX == '-') && !isBracket) befX = curX;
}
// 3. .
// ex.
// 0-(1-2)+(3+4)-5+6-(7+8+9)+0+1+2+3+4+5 = 0
// 5-(3-2+4)+(3-7-4+1)-5+6-0-(7+2+9)+5+0+1-2+3-4+(5+9)-3+7 = -3
// .
//
// (1-2)+(3-4) = -1 (, -2 ).
// -> subtask_7.txt, subtask_10.txt WA .
cout << ans << endl;
return 0;
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0