結果
問題 | No.457 (^^*) |
ユーザー |
|
提出日時 | 2016-12-08 03:12:56 |
言語 | D (dmd 2.109.1) |
結果 |
AC
|
実行時間 | 178 ms / 2,000 ms |
コード長 | 1,213 bytes |
コンパイル時間 | 1,017 ms |
コンパイル使用メモリ | 112,396 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-06-12 05:24:14 |
合計ジャッジ時間 | 2,631 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 20 |
ソースコード
import std.stdio;import std.array;import std.string;import std.conv;import std.algorithm;import std.typecons;import std.range;import std.random;import std.math;import std.container;import std.numeric;import std.bigint;void main() {auto S = readln.chomp;auto N = S.length.to!int;auto right_p = new int[](N+1);foreach (i; 0..N)if (S[i] == ')')right_p[i+1] = 1;foreach (i; 0..N)right_p[i+1] += right_p[i];int l_ans;foreach (i; 0..N) {int left;if (S[i] == '(') {foreach (j; i+1..N) {if (S[j] == '^')left = (left < 3) ? min(2, left+1) : 3;else if (S[j] == '*')left = (left == 2) ? 3 : left;if (left == 3) {l_ans += right_p[N] - right_p[j];break;}}}}int r_ans;foreach (i; 0..N) {int right;if (S[i] == '(') {foreach (j; i+1..N) {if (S[j] == '*')right = (right == 0) ? 1 : right;else if (S[j] == '^')right = (right > 0) ? min(3, right+1) : 0;if (right == 3) {r_ans += right_p[N] - right_p[j];break;}}}}writeln(l_ans, " ", r_ans);}