結果

問題 No.297 カードの数式
ユーザー けー
提出日時 2015-11-07 16:30:05
言語 C++11(廃止可能性あり)
(gcc 13.3.0)
結果
AC  
実行時間 2 ms / 1,000 ms
コード長 1,111 bytes
コンパイル時間 787 ms
コンパイル使用メモリ 71,688 KB
実行使用メモリ 5,248 KB
最終ジャッジ日時 2024-12-26 02:23:50
合計ジャッジ時間 1,791 ms
ジャッジサーバーID
(参考情報)
judge2 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 23
権限があれば一括ダウンロードができます

ソースコード

diff #

#include<iostream>
#include<string>
#include<list>
#include<map>
#include<vector>
#include<stack>
#include<cstdint>
#include<sstream>
#include<numeric>
#include<algorithm>
#define INT long long
using namespace std;
INT a, b, c, n, m;
char dp[15];
INT plb[15], mib[15];
INT pl, mi;
int main() {
	INT i, j, k, t, u, v, sm = 0, bi = 0;
	cin >> n;
	for (i = 0; i < n; i++)
		cin >> dp[i];
	sort(dp,dp+n);
	pl++;
	for (i = 0;; i++) {
		if (dp[i] == '+')
			pl++;
		else if (dp[i] == '-')
			mi++;
		else
			break;
	}
	v = i;
	for (; i < n; i++)
		dp[i] -= '0';
	if (mi == 0) {
		for (i = v; i < n; i++) {
			mib[i%pl] *= 10;
			mib[i%pl] += dp[i];
		}
		for (i = 0; i < pl; i++)
			sm += mib[i];
	}
	else {
		for (i = v; i < v + pl; i++)
			sm += dp[i];
		for (; i < v + pl + mi - 1; i++)
			sm -= dp[i];
		u = i;
		t = 0;
		for (i = n - 1; i >= u; i--) {
			t *= 10;
			t += dp[i];
		}
		sm -= t;
	}
	for (i = v; i < v + mi; i++)
		bi -= dp[i];
	for (; i < v + mi + pl - 1; i++)
		bi += dp[i];
	u = i;
	t = 0;
	for (i = n - 1; i >= u; i--) {
		t *= 10;
		t += dp[i];
	}
	bi += t;
	cout << bi << ' ' << sm << endl;
}
0