結果
問題 | No.708 (+ー)の式 |
ユーザー |
|
提出日時 | 2020-04-22 21:44:57 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 2 ms / 2,000 ms |
コード長 | 1,097 bytes |
コンパイル時間 | 1,389 ms |
コンパイル使用メモリ | 167,620 KB |
実行使用メモリ | 6,824 KB |
最終ジャッジ日時 | 2024-10-12 04:50:50 |
合計ジャッジ時間 | 1,968 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 12 |
ソースコード
#include <bits/stdc++.h>#define rep(i,n) for(int i=0;i<n;i++)using namespace std;using ll = long long ;using P = pair<int,int> ;const int INF = 1e9;const int MOD = 1000000007;int main(){string s;cin >> s;int ans = 0;int n = s.size();bool plus = true;bool close = false;bool close_plus = true;rep(i,n){if(s[i] == '('){close = true;plus = true;if(i>0){if(s[i-1] == '-') close_plus = false;else close_plus = true;}else{close_plus = true;}continue;}if(s[i] == ')'){close = false;continue;}if(s[i] == '+'){plus = true;continue;}if(s[i] == '-'){plus = false;continue;}if(close){ans += (s[i] - '0') * (plus ^ close_plus ? -1 : 1);}else{ans += (s[i] - '0') * (plus ? 1 : -1);}}cout << ans << endl;return 0;}