結果
問題 | No.1021 Children in Classrooms |
ユーザー |
|
提出日時 | 2020-04-10 21:50:58 |
言語 | D (dmd 2.109.1) |
結果 |
AC
|
実行時間 | 66 ms / 2,000 ms |
コード長 | 1,465 bytes |
コンパイル時間 | 735 ms |
コンパイル使用メモリ | 120,420 KB |
実行使用メモリ | 14,192 KB |
最終ジャッジ日時 | 2024-06-22 06:32:28 |
合計ジャッジ時間 | 2,842 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 17 |
ソースコード
import std.stdio, std.array, std.string, std.conv, std.algorithm; import std.typecons, std.range, std.random, std.math, std.container; import std.numeric, std.bigint, core.bitop, core.stdc.stdlib; void main() { auto s = readln.split.map!(to!int); auto N = s[0]; auto M = s[1]; auto A = readln.split.map!(to!long).array; auto S = readln.chomp; int left = 0; int right = N - 1; int left_end = 0; int right_end = N - 1; int diff = 0; foreach (i; 0..M) { auto c = S[i]; if (c == 'L') { if (left_end == 0) { left = min(N - 1, left + 1); right_end = max(0, right_end - 1); } else { left_end = max(0, left_end - 1); right_end = max(0, right_end - 1); } diff -= 1; } else { if (right_end == N - 1) { right = max(0, right - 1); left_end = min(N - 1, left_end + 1); } else { left_end = min(N - 1, left_end + 1); right_end = min(N - 1, right_end + 1); } diff += 1; } } auto ans = new long[](N); foreach (i; 0..N) { if (i <= left) { ans[left_end] += A[i]; } else if (i >= right) { ans[right_end] += A[i]; } else { ans[i + diff] += A[i]; } } ans.map!(to!string).join(" ").writeln; }