結果
| 問題 |
No.297 カードの数式
|
| コンテスト | |
| ユーザー |
yosupot
|
| 提出日時 | 2015-11-06 23:11:13 |
| 言語 | D (dmd 2.109.1) |
| 結果 |
AC
|
| 実行時間 | 2 ms / 1,000 ms |
| コード長 | 1,063 bytes |
| コンパイル時間 | 1,816 ms |
| コンパイル使用メモリ | 153,432 KB |
| 実行使用メモリ | 5,376 KB |
| 最終ジャッジ日時 | 2024-06-12 02:45:53 |
| 合計ジャッジ時間 | 2,784 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 23 |
ソースコード
import std.stdio, std.conv;
import std.algorithm, std.range, std.random;
import std.string, std.array, std.container, std.bigint;
import std.typecons, std.ascii;
int[] d;
int main() {
int n;
readf("%d\n", &n);
int[] d;
int pn, mn;
foreach (i; 0..n) {
char c;
readf(" %c", &c);
if (isDigit(c)) {
d ~= to!int(""~c);
} else {
final switch(c) {
case '+':
pn++;
break;
case '-':
mn++;
break;
}
}
}
d.sort!"a > b";
pn++;
auto dd = d.dup;
long sm = 0;
foreach (i; 0..mn) {
sm -= d.back;
d.popBack;
}
foreach (i; 0..pn-1) {
sm += d.back;
d.popBack;
}
sm += d.map!(to!string).join.to!long;
if (mn != 0) {
d = dd;
long msm = 0;
foreach (i; 0..pn) {
msm += d.back;
d.popBack;
}
foreach (i; 0..mn-1) {
msm -= d.back;
d.popBack;
}
msm -= d.map!(to!string).join.to!long;
writeln(sm, " ", msm);
return 0;
}
d = dd;
long[] buf = new long[](pn);
d.reverse;
foreach (i; 0..d.length) {
buf[i % pn] *= 10;
buf[i % pn] += d[i];
}
writeln(sm, " ", buf.sum);
return 0;
}
yosupot