結果
| 問題 |
No.345 最小チワワ問題
|
| コンテスト | |
| ユーザー |
urutom
|
| 提出日時 | 2022-11-01 06:51:26 |
| 言語 | Go (1.23.4) |
| 結果 |
AC
|
| 実行時間 | 2 ms / 2,000 ms |
| コード長 | 1,254 bytes |
| コンパイル時間 | 14,274 ms |
| コンパイル使用メモリ | 223,292 KB |
| 実行使用メモリ | 6,944 KB |
| 最終ジャッジ日時 | 2024-07-16 02:58:04 |
| 合計ジャッジ時間 | 15,412 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 29 |
ソースコード
package main
import (
"bufio"
"fmt"
"math"
"os"
"strconv"
)
const MaxInt = math.MaxInt64
var scanner *bufio.Scanner
func nextChar(s string, c byte, currPos int) int {
currPos++
for currPos < len(s) {
if s[currPos] == c {
return currPos
}
currPos++
}
return -1
}
const (
c_ch = 'c'
w_ch = 'w'
)
func main() {
var s string
fmt.Scanln(&s)
c := nextChar(s, c_ch, -1)
w1 := nextChar(s, w_ch, -1)
w2 := nextChar(s, w_ch, w1)
if (c == -1) || (w1 == -1) || (w2 == -1) {
fmt.Println(-1)
return
}
min := len(s) + 1
for (c != -1) && (w2 != -1) {
if w1 < c {
w1 = w2
w2 = nextChar(s, w_ch, w2)
} else {
temp := w2 - c + 1
if temp < min {
min = temp
}
c = nextChar(s, c_ch, c)
}
}
if min == len(s)+1 {
min = -1
}
fmt.Println(min)
}
func init() {
scanner = bufio.NewScanner(os.Stdin)
scanner.Buffer([]byte{}, MaxInt)
scanner.Split(bufio.ScanWords)
}
func Int() int {
scanner.Scan()
ret, _ := strconv.ParseInt(scanner.Text(), 10, 0)
return int(ret)
}
func Ints(n int) []int {
ret := make([]int, n)
for i := 0; i < n; i++ {
ret[i] = Int()
}
return ret
}
func Max(a, b int) int {
if a < b {
return b
}
return a
}
func Min(a, b int) int {
if a < b {
return a
}
return b
}
urutom