結果
問題 |
No.910 素数部分列
|
ユーザー |
|
提出日時 | 2019-10-18 21:49:21 |
言語 | D (dmd 2.109.1) |
結果 |
AC
|
実行時間 | 12 ms / 1,000 ms |
コード長 | 786 bytes |
コンパイル時間 | 733 ms |
コンパイル使用メモリ | 114,852 KB |
実行使用メモリ | 6,948 KB |
最終ジャッジ日時 | 2024-06-22 02:47:50 |
合計ジャッジ時間 | 2,441 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 50 |
ソースコード
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.string; void main() { auto N = readln.chomp.to!int; auto S = readln.chomp; auto T = S.filter!(s => s == '1' || s == '9').array; int ans = S.length.to!int - T.length.to!int; int ichi = 0; int kyuu = 0; foreach_reverse (i; 0..T.length.to!int) { if (T[i] == '1') { if (kyuu > 0) { ans += 1; kyuu -= 1; } else { ichi += 1; } } else { kyuu += 1; } } int x = min(kyuu / 2, ichi); ans += x; ans += (ichi - x) / 2; ans.writeln; }