結果
| 問題 | No.708 (+ー)の式 | 
| コンテスト | |
| ユーザー |  stmtk_01 | 
| 提出日時 | 2018-07-21 00:41:05 | 
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 2 ms / 2,000 ms | 
| コード長 | 1,006 bytes | 
| コンパイル時間 | 689 ms | 
| コンパイル使用メモリ | 93,240 KB | 
| 実行使用メモリ | 6,820 KB | 
| 最終ジャッジ日時 | 2024-12-26 04:34:26 | 
| 合計ジャッジ時間 | 1,329 ms | 
| ジャッジサーバーID (参考情報) | judge3 / judge2 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 3 | 
| other | AC * 12 | 
ソースコード
#include <iostream>
#include <set>
#include <vector>
#include <string>
#include <algorithm>
#include <iterator>
#include <regex>
using namespace std;
#define rep(i, n) for(int i = 0; i < n; i++)
#define repi(i, n) for(auto i = (n).begin(); i != (n).end(); i++)
#define in_arr(type, a, n) copy_n(istream_iterator<type>(cin), n, (a).begin());
#define ll long long int
string s;
string::iterator i;
ll num();
ll eval();
int main(){
    cin >> s;
    i = s.begin();
    cout << eval() << endl;
    return 0;
}
ll eval(){
    ll ans = num();
    if(i == s.end()){
        return ans;
    }
    while(i != s.end() && (*i == '+' || *i == '-')){
        if(*i == '+'){
            ++i;
            ans += num();
        }else if(*i == '-'){
            ++i;
            ans -= num();
        }
    }
    return ans;
}
ll num(){
    if('0' <= *i && *i <= '9')
        return (ll)(*(i++) - '0');
    if(*i == '('){
        ++i;
        ll ans = eval();
        ++i;
        return ans;
    }
    return 0;
}
            
            
            
        