結果
| 問題 |
No.345 最小チワワ問題
|
| コンテスト | |
| ユーザー |
mochi_suna
|
| 提出日時 | 2018-07-28 17:12:13 |
| 言語 | Go (1.23.4) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,010 bytes |
| コンパイル時間 | 16,187 ms |
| コンパイル使用メモリ | 244,904 KB |
| 実行使用メモリ | 6,944 KB |
| 最終ジャッジ日時 | 2024-07-05 21:28:51 |
| 合計ジャッジ時間 | 15,722 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 23 WA * 6 |
ソースコード
package main
import (
"bufio"
"fmt"
"math"
"os"
)
type myScanner struct {
*bufio.Scanner
}
func NewScanner(fp *os.File) *myScanner {
return &myScanner{
bufio.NewScanner(fp),
}
}
func (sc *myScanner) nextLine() (bool, string) {
flg := sc.Scan()
return !flg, sc.Text()
}
func check(in string) bool {
c, w := false, false
for _, s := range in {
if s == 'c' {
c = true
continue
}
if c && !w && s == 'w' {
w = true
continue
}
if c && w && s == 'w' {
return true
}
}
return false
}
func cww(in string) int {
min := math.MaxInt64
c, w := -1, -1
for i, s := range in {
switch s {
case 'c':
c = i
case 'w':
if w != -1 {
min = int(math.Min(float64(min), float64(i-w)+1))
} else if c != -1 {
// 起点となるcの位置を保持
w = c
}
}
}
return min
}
func main() {
sc := NewScanner(os.Stdin)
for {
flg, in := sc.nextLine()
if flg {
break
}
if !check(in) {
fmt.Println(-1)
continue
}
fmt.Println(cww(in))
}
}
mochi_suna