結果
| 問題 |
No.297 カードの数式
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2022-12-23 18:23:51 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 2 ms / 1,000 ms |
| コード長 | 1,149 bytes |
| コンパイル時間 | 1,967 ms |
| コンパイル使用メモリ | 178,444 KB |
| 実行使用メモリ | 6,820 KB |
| 最終ジャッジ日時 | 2024-11-18 04:08:25 |
| 合計ジャッジ時間 | 2,446 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 23 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int main(){
int n, p = 0, m = 0;
cin >> n;
vector<char> c(n);
string s;
for(auto &&v:c){
cin >> v;
if(v >= '0' && v <= '9')s += v;
else{
p += (v == '+');
m += (v == '-');
}
}
sort(s.begin(), s.end());
vector<string> ans1(p + m + 1), ans2(p + m + 1);
for(int i = 0; i < s.size(); i++){
ans1[max(p + m - i, 0)] += s[i];
}
if(m >= 1){
for(int i = 0; i < s.size(); i++){
ans2[min(p + m, i)] += s[i];
}
}else{
for(int i = 0; i < s.size(); i++){
ans2[i % (p + m + 1)] += s[i];
}
}
sort(ans1[0].rbegin(), ans1[0].rend());
sort(ans2[0].begin(), ans2[0].end());
ll v1 = stoll(ans1[0]), v2 = stoll(ans2[0]);
for(int i = 1; i <= p; i++){
sort(ans1[i].rbegin(), ans1[i].rend());
sort(ans2[i].begin(), ans2[i].end());
v1 += stoll(ans1[i]);
v2 += stoll(ans2[i]);
}
for(int i = p + 1; i <= p + m; i++){
sort(ans1[i].begin(), ans1[i].end());
sort(ans2[i].rbegin(), ans2[i].rend());
v1 -= stoll(ans1[i]);
v2 -= stoll(ans2[i]);
}
cout << v1 << " " << v2 << '\n';
}