結果
| 問題 |
No.297 カードの数式
|
| コンテスト | |
| ユーザー |
htensai
|
| 提出日時 | 2019-12-26 17:58:14 |
| 言語 | Java (openjdk 23) |
| 結果 |
AC
|
| 実行時間 | 134 ms / 1,000 ms |
| コード長 | 1,904 bytes |
| コンパイル時間 | 2,020 ms |
| コンパイル使用メモリ | 81,180 KB |
| 実行使用メモリ | 55,080 KB |
| 最終ジャッジ日時 | 2024-10-04 15:11:22 |
| 合計ジャッジ時間 | 6,185 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 23 |
ソースコード
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = Integer.parseInt(sc.nextLine());
ArrayList<Integer> numbers = new ArrayList<>();
ArrayList<Character> chars = new ArrayList<>();
char[] arr = sc.nextLine().toCharArray();
for (int i = 0; i < arr.length; i += 2) {
if (arr[i] >= '0' && arr[i] <= '9') {
numbers.add(arr[i] - '0');
} else {
chars.add(arr[i]);
}
}
Collections.sort(numbers);
Collections.sort(chars);
long max = 0;
int count = numbers.size() - chars.size();
for (int i = 0; i < count; i++) {
max *= 10;
max += numbers.get(numbers.size() - 1 - i);
}
long min;
if (chars.get(chars.size() - 1) == '-') {
min = - max;
for (int i = chars.size() - 2; i >= 0; i--) {
if (chars.get(i) == '+') {
min += numbers.get(i + 1);
} else {
min -= numbers.get(i + 1);
}
}
min += numbers.get(0);
} else {
int[] values = new int[chars.size() + 1];
for (int i = 0; i < numbers.size(); i++) {
int idx = i % values.length;
values[idx] *= 10;
values[idx] += numbers.get(i);
}
min = 0;
for (int i = 0; i < values.length; i++) {
min += values[i];
}
}
for (int i = 0; i < chars.size(); i++) {
if (chars.get(chars.size() - 1 - i) == '+') {
max += numbers.get(i);
} else {
max -= numbers.get(i);
}
}
System.out.println(max + " " + min);
}
}
htensai