結果
| 問題 |
No.345 最小チワワ問題
|
| コンテスト | |
| ユーザー |
mochi_suna
|
| 提出日時 | 2018-07-28 17:42:59 |
| 言語 | Go (1.23.4) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,095 bytes |
| コンパイル時間 | 13,349 ms |
| コンパイル使用メモリ | 238,284 KB |
| 実行使用メモリ | 5,376 KB |
| 最終ジャッジ日時 | 2024-07-05 23:40:10 |
| 合計ジャッジ時間 | 13,891 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 WA * 2 |
| other | AC * 8 WA * 21 |
ソースコード
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':
fmt.Printf("c: %v\n", c)
c = i
case 'w':
if w != -1 {
fmt.Printf("w: %v\n", w)
min = int(math.Min(float64(min), float64(i-w)+1))
}
if c != -1 {
// 起点となるcの位置を保持
fmt.Printf("cw: %v\n", 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