結果
問題 |
No.935 う し た ぷ に き あ く ん 笑 ビ - ム
|
ユーザー |
|
提出日時 | 2021-12-19 11:49:58 |
言語 | Go (1.23.4) |
結果 |
AC
|
実行時間 | 30 ms / 2,000 ms |
コード長 | 941 bytes |
コンパイル時間 | 14,764 ms |
コンパイル使用メモリ | 231,080 KB |
実行使用メモリ | 6,812 KB |
最終ジャッジ日時 | 2024-09-15 14:27:01 |
合計ジャッジ時間 | 17,345 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 58 |
ソースコード
package main import ( "fmt" "bufio" "os" ) type Enemy struct { n int s []int a []int } func main() { r := bufio.NewReader(os.Stdin) w := bufio.NewWriter(os.Stdout) defer w.Flush() enemy := new(Enemy) fmt.Fscan(r, &enemy.n) var s string fmt.Fscan(r, &s) enemy.s = make([]int, enemy.n) enemy.a = make([]int, enemy.n) for i := 0; i < enemy.n; i++ { if s[i] == 'E' { enemy.s[i] = 1 } fmt.Fscan(r, &enemy.a[i]) } var Q int fmt.Fscan(r, &Q) for i := 0; i < Q; i++ { var k int fmt.Fscan(r, &k) fmt.Fprintln(w, enemy.max(k)) } } func (this *Enemy) max(k int) int{ maxres := 0 res := 0 s, t, sum := 0, 0, 0 for true { for t < this.n && sum <= k { sum += this.a[t] res += this.s[t] t++ } if sum <= k { if res > maxres { maxres = res } break } if res - this.s[t-1] > maxres { maxres = res - this.s[t-1] } sum -= this.a[s] res -= this.s[s] s++ } return maxres }