結果

問題 No.193 筒の数式
ユーザー IJMP320IJMP320
提出日時 2015-04-26 23:37:30
言語 C++11
(gcc 11.4.0)
結果
AC  
実行時間 2 ms / 1,000 ms
コード長 1,384 bytes
コンパイル時間 1,561 ms
コンパイル使用メモリ 168,804 KB
実行使用メモリ 6,944 KB
最終ジャッジ日時 2024-07-05 02:46:13
合計ジャッジ時間 2,333 ms
ジャッジサーバーID
(参考情報)
judge3 / judge1
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 2 ms
6,812 KB
testcase_01 AC 2 ms
6,940 KB
testcase_02 AC 2 ms
6,944 KB
testcase_03 AC 2 ms
6,944 KB
testcase_04 AC 2 ms
6,940 KB
testcase_05 AC 2 ms
6,944 KB
testcase_06 AC 1 ms
6,940 KB
testcase_07 AC 2 ms
6,944 KB
testcase_08 AC 1 ms
6,944 KB
testcase_09 AC 1 ms
6,940 KB
testcase_10 AC 2 ms
6,940 KB
testcase_11 AC 2 ms
6,940 KB
testcase_12 AC 2 ms
6,944 KB
testcase_13 AC 2 ms
6,940 KB
testcase_14 AC 1 ms
6,940 KB
testcase_15 AC 2 ms
6,944 KB
testcase_16 AC 2 ms
6,944 KB
testcase_17 AC 2 ms
6,940 KB
testcase_18 AC 2 ms
6,944 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> pii;
#define FOR(i,a,n) for(int i=a;i<(int)(n);i++)
#define REP(i,n) FOR(i,0,n)
#define ALL(a) (a).begin(),(a).end()
#define MP(a,b) make_pair(a,b)
#define PB(a) push_back(a)
#define F first
#define S second
const int INF = 2000000000;
const int DX[4]={0,1,0,-1}, DY[4]={-1,0,1,0};
struct P{int x;int y;P(int X=0,int Y=0){x=X;y=Y;}};

int main() {
	string S;
	cin >> S;
	int len = S.size();
	ll ans = -INF;
	REP(i,len) {
		if(S[0]=='+' || S[0]=='-' || S[len-1]=='+' || S[len-1]=='-') {
			char a = S[0];
			REP(i,len-1) {
				S[i] = S[i+1];
			}
			S[len-1] = a;
			continue;
		}

		string tmp;
		queue<int> num;
		queue<char> en;
		REP(j,len) {
			if(S[j]=='+') {
				int n = atoi(tmp.c_str());
				num.push(n);
				tmp="";
				en.push('+');
			}
			else if(S[j]=='-') {
				int n = atoi(tmp.c_str());
				num.push(n);
				tmp="";
				en.push('-');
			}
			else {
				tmp += S[j];
			}
		}
		int n = atoi(tmp.c_str());
		num.push(n);

		ll t=num.front(); num.pop();
		while(true) {
			ll b = num.front(); num.pop();
			char c = en.front(); en.pop();
			if(c=='+') t += b;
			else if(c=='-') t -= b;

			if(num.empty()) break;
		}
		ans = max(ans, t);

		char a = S[0];
		REP(i,len-1) {
			S[i] = S[i+1];
		}
		S[len-1] = a;
	}
	cout << ans << endl;
	return 0;
}
0