結果

問題 No.708 (+ー)の式
ユーザー ikd
提出日時 2018-07-16 10:23:20
言語 C++14
(gcc 13.3.0 + boost 1.87.0)
結果
AC  
実行時間 2 ms / 2,000 ms
コード長 667 bytes
コンパイル時間 597 ms
コンパイル使用メモリ 70,080 KB
実行使用メモリ 5,248 KB
最終ジャッジ日時 2024-11-15 21:25:47
合計ジャッジ時間 1,334 ms
ジャッジサーバーID
(参考情報)
judge5 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 12
権限があれば一括ダウンロードができます

ソースコード

diff #

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;

#define rep(i,n) for(int i=0;i<(n);i++)

int main(){

  string s; cin>> s;
  int n=s.size();

  int res=0;
  for(int i=n-1; i>=0; i--){
    if(s[i]=='+' or s[i]=='-') continue;
    int sub=0, sgn;
    if(s[i]==')'){
      while(s[--i]!='('){
        if(s[i]=='+' or s[i]=='-') continue;
        int _sgn=(i-1>=0 and s[i-1]=='-') ? -1 : 1;
        sub+=(s[i]-'0')*_sgn;
      }
      sgn=(i-1>=0 and s[i-1]=='-') ? -1 : 1;
    }else if('0'<=s[i] and s[i]<='9'){
      sub=s[i]-'0';
      sgn=(i-1>=0 and s[i-1]=='-') ? -1 : 1;
    }
    res+=sub*sgn;
  }

  cout<< res<< endl;
  return 0;
}
0