結果
問題 | No.297 カードの数式 |
ユーザー | ctyl_0 |
提出日時 | 2015-11-10 05:15:56 |
言語 | C++11 (gcc 11.4.0) |
結果 |
AC
|
実行時間 | 2 ms / 1,000 ms |
コード長 | 3,077 bytes |
コンパイル時間 | 944 ms |
コンパイル使用メモリ | 92,240 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-06-07 18:15:17 |
合計ジャッジ時間 | 1,812 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 1 ms
5,248 KB |
testcase_01 | AC | 2 ms
5,376 KB |
testcase_02 | AC | 2 ms
5,376 KB |
testcase_03 | AC | 2 ms
5,376 KB |
testcase_04 | AC | 1 ms
5,376 KB |
testcase_05 | AC | 2 ms
5,376 KB |
testcase_06 | AC | 2 ms
5,376 KB |
testcase_07 | AC | 1 ms
5,376 KB |
testcase_08 | AC | 2 ms
5,376 KB |
testcase_09 | AC | 2 ms
5,376 KB |
testcase_10 | AC | 1 ms
5,376 KB |
testcase_11 | AC | 2 ms
5,376 KB |
testcase_12 | AC | 2 ms
5,376 KB |
testcase_13 | AC | 2 ms
5,376 KB |
testcase_14 | AC | 2 ms
5,376 KB |
testcase_15 | AC | 1 ms
5,376 KB |
testcase_16 | AC | 2 ms
5,376 KB |
testcase_17 | AC | 2 ms
5,376 KB |
testcase_18 | AC | 2 ms
5,376 KB |
testcase_19 | AC | 1 ms
5,376 KB |
testcase_20 | AC | 2 ms
5,376 KB |
testcase_21 | AC | 2 ms
5,376 KB |
testcase_22 | AC | 2 ms
5,376 KB |
testcase_23 | AC | 1 ms
5,376 KB |
testcase_24 | AC | 2 ms
5,376 KB |
testcase_25 | AC | 2 ms
5,376 KB |
ソースコード
#include <iostream> #include <iomanip> #include <vector> #include <algorithm> #include <numeric> #include <functional> #include <cmath> #include <queue> #include <stack> #include <set> #include <map> #include <sstream> #include <string> #define repd(i,a,b) for (int i=(a);i<(b);i++) #define rep(i,n) repd(i,0,n) #define var auto #define mod 1000000007 #define inf 2147483647 #define nil -1 typedef long long ll; using namespace std; int inputValue(){ int a; cin >> a; return a; } template <typename T> void output(T a, int precision) { if(precision > 0){ cout << fixed << setprecision(precision) << a << "\n"; } else{ cout << a << "\n"; } } // end of template int main() { cin.tie(0); // source code int N; cin >> N; vector<int> C; int plus = 0; int minus = 0; rep(i, N){ char c; cin >> c; if (c == '+') { plus++; } else if (c == '-'){ minus++; } else{ C.push_back(c - '0'); } } sort(C.begin(), C.end()); ll retmax = 0; ll retmin = 0; int ops = plus + minus; if (plus == 0) { ll big = 0; reverse(C.begin(), C.end()); rep(i, C.size() - ops){ big *= 10; big += C[i]; } retmax = big; retmin = C[C.size() - 1]; repd(i, (int)C.size() - ops, C.size()){ retmax -= C[i]; if (i != C.size() - 1) { retmin -= C[i]; } } retmin -= big; cout << retmax << " " << retmin << endl; } else if(minus == 0){ ll retmin = 0; ll retmax = 0; vector<ll> num(ops + 1, 0); rep(i, C.size() - ops){ retmax *= 10; retmax += C[C.size() - 1 - i]; } repd(i, (int)C.size() - ops, C.size()){ retmax += C[C.size() - 1 - i]; } rep(i, C.size()){ num[i % (ops + 1)] *= 10; num[i % (ops + 1)] += C[i]; } rep(i, num.size()){ retmin += num[i]; } cout << retmax << " " << retmin << endl; } else{ ll big = 0; reverse(C.begin(), C.end()); rep(i, C.size() - ops){ big *= 10; big += C[i]; } int tmpP = plus; retmax = big; // max repd(i, (int)C.size() - ops, C.size()){ if (tmpP) { retmax += C[i]; tmpP--; continue; } retmax -= C[i]; } int tmpM = minus - 1; retmin = -big; repd(i, (int)C.size() - ops, C.size()){ if (tmpM) { retmin -= C[i]; tmpM--; continue; } retmin += C[i]; } cout << retmax << " " << retmin << endl; } return 0; }