結果
問題 | 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); }