Submission #1677958


Source Code Expand

package main

import (
	"bufio"
	"fmt"
	"os"
	"strconv"
)

func main() {
	ns := newfastScanner()
	N := ns.NextInt()
	K := ns.NextInt()
	A := make([]int, K)
	target := make([]bool, N)
	for i := 0; i < K; i++ {
		A[i] = ns.NextInt() - 1
		target[A[i]] = true
	}
	S := make([]string, N)
	for i := 0; i < N; i++ {
		S[i] = ns.Next()
	}
	if K == N {
		fmt.Println("")
		return
	}
	ma := 0
	mi := len(S[A[0]]) // ひとつ検索したいサイトを選んでその長さ
	for i := 0; i < N; i++ {
		if i == A[0] {
			continue
		}
		l := min(len(S[A[0]]), len(S[i]))
		for j := 0; j < min(len(S[A[0]]), len(S[i])); j++ {
			if S[A[0]][j] != S[i][j] {
				l = j
				break
			}
		}
		if target[i] {
			mi = min(mi, l)
		} else {
			ma = max(ma, l)
		}
	}
	if ma < mi {
		fmt.Println(S[A[0]][0 : ma+1])
	} else {
		fmt.Println("-1")
	}
}

func max(a, b int) int {
	if a > b {
		return a
	}
	return b
}

func min(a, b int) int {
	if a < b {
		return a
	}
	return b
}

type fastScanner struct {
	r   *bufio.Reader
	buf []byte
	p   int
}

func newfastScanner() *fastScanner {
	rdr := bufio.NewReaderSize(os.Stdin, 1024)
	return &fastScanner{r: rdr}
}
func (s *fastScanner) Next() string {
	s.pre()
	start := s.p
	for ; s.p < len(s.buf); s.p++ {
		if s.buf[s.p] == ' ' {
			break
		}
	}
	result := string(s.buf[start:s.p])
	s.p++
	return result
}
func (s *fastScanner) NextLine() string {
	s.pre()
	start := s.p
	s.p = len(s.buf)
	return string(s.buf[start:])
}
func (s *fastScanner) NextInt() int {
	v, _ := strconv.Atoi(s.Next())
	return v
}
func (s *fastScanner) pre() {
	if s.p >= len(s.buf) {
		s.readLine()
		s.p = 0
	}
}
func (s *fastScanner) readLine() {
	s.buf = make([]byte, 0)
	for {
		l, p, e := s.r.ReadLine()
		if e != nil {
			panic(e)
		}
		s.buf = append(s.buf, l...)
		if !p {
			break
		}
	}
}

Submission Info

Submission Time
Task C - 検索
User fmhr
Language Go (1.6)
Score 400
Code Size 1917 Byte
Status AC
Exec Time 49 ms
Memory 5504 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 400 / 400
Status
AC × 3
AC × 30
Set Name Test Cases
Sample sample1.txt, sample2.txt, sample3.txt
All sample1.txt, sample2.txt, sample3.txt, in1.txt, in10.txt, in11.txt, in12.txt, in13.txt, in14.txt, in15.txt, in16.txt, in17.txt, in18.txt, in19.txt, in2.txt, in20.txt, in3.txt, in4.txt, in5.txt, in6.txt, in7.txt, in8.txt, in9.txt, long.txt, long2.txt, sample1.txt, sample2.txt, sample3.txt, long.txt, long2.txt
Case Name Status Exec Time Memory
in1.txt AC 2 ms 896 KB
in10.txt AC 2 ms 768 KB
in11.txt AC 5 ms 1152 KB
in12.txt AC 2 ms 896 KB
in13.txt AC 2 ms 1152 KB
in14.txt AC 2 ms 768 KB
in15.txt AC 2 ms 896 KB
in16.txt AC 1 ms 640 KB
in17.txt AC 2 ms 768 KB
in18.txt AC 2 ms 768 KB
in19.txt AC 5 ms 1024 KB
in2.txt AC 5 ms 1024 KB
in20.txt AC 2 ms 1152 KB
in3.txt AC 26 ms 4480 KB
in4.txt AC 38 ms 5504 KB
in5.txt AC 2 ms 896 KB
in6.txt AC 1 ms 640 KB
in7.txt AC 2 ms 1024 KB
in8.txt AC 4 ms 1152 KB
in9.txt AC 49 ms 5504 KB
long.txt AC 2 ms 1280 KB
long2.txt AC 10 ms 2176 KB
sample1.txt AC 1 ms 640 KB
sample2.txt AC 1 ms 640 KB
sample3.txt AC 1 ms 640 KB