結果
| 問題 |
No.2035 Tunnel
|
| コンテスト | |
| ユーザー |
ID 21712
|
| 提出日時 | 2025-05-15 01:40:36 |
| 言語 | Go (1.23.4) |
| 結果 |
AC
|
| 実行時間 | 290 ms / 2,000 ms |
| コード長 | 1,009 bytes |
| コンパイル時間 | 12,516 ms |
| コンパイル使用メモリ | 238,156 KB |
| 実行使用メモリ | 7,844 KB |
| 最終ジャッジ日時 | 2025-05-15 01:40:55 |
| 合計ジャッジ時間 | 18,820 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 28 |
ソースコード
package main
import . "fmt"
import . "slices"
func main() {
var n int
var s string
Scan(&n, &s)
ans := solve(n, s)
Println(ans)
}
func solve(n int, s string) int {
bs := []byte(s)
Reverse(bs)
ans := 0
c := 1
for i, b := range bs {
if c > 0 {
c--
}
if b == '#' {
ans = max(ans, i+1+c)
c += 2
}
}
return ans
}
func init() {
check()
}
func check() {
n := 10
b := make([]byte, n)
for i := 0; i < (1<<n); i++ {
for j := 0; j < n; j++ {
if ((i>>j)&1) == 0 {
b[j] = '.'
} else {
b[j] = '#'
}
}
s := string(b)
a1 := solve(n, s)
a2 := brutefoce(n, s)
if a1 != a2 {
panic(Sprintf("n=%d,s=%s,a1=%d,a2=%d",n,s,a1,a2))
}
}
}
func brutefoce(n int, s string) int {
bs := append([]byte(s), '.')
ans := 0
for {
bs[n] = '.'
found := false
for i := 0; i < n; i++ {
if bs[i] == '.' {
continue
}
found = true
if bs[i+1] == '.' {
bs[i] = '.'
bs[i+1] = '#'
i++
}
}
if !found {
break
}
ans++
}
return ans
}
ID 21712