Submission #2177008


Source Code Expand

package main

import (
	"fmt"
	"sort"
)

type set struct {
	s []int
}

var N, K int
var S string

func remove(set []int, a int) []int {
	s := make([]int, len(set))
	copy(s, set)
	for i := range s {
		if a == s[i] {
			return append(s[:i], s[i+1:]...)
		}
	}
	panic("not found")
}

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

func abs(a int) int {
	if a > 0 {
		return a
	}
	return -a
}

func diffs(T []int, rests []int) bool {
	same := 0
	for i := range T {
		if int(S[i]) == T[i] {
			same++
		}
	}

	setS := map[int]int{}
	setRests := map[int]int{}
	for i := len(T); i < len(S); i++ {
		setS[int(S[i])]++
	}

	for i := range rests {
		setRests[int(rests[i])]++
	}

	for key, val := range setS {
		same += min(val, setRests[key])
	}

	return len(S)-same <= K
}

func main() {
	fmt.Scan(&N, &K)
	fmt.Scan(&S)

	var set []int
	for i := range S {
		set = append(set, int(S[i]))
	}
	sort.Ints(set)

	var T []int
	for j := 0; j < len(S); j++ {
		for _, s := range set {
			remSet := remove(set, s)
			if diffs(append(T, s), remSet) {
				T = append(T, s)
				set = remSet
				goto next
			}
		}
		T = append(T, set[0])
		set = remove(set, int(set[0]))
	next:
	}

	for _, t := range T {
		fmt.Print(string(uint8(t)))
	}
	fmt.Println()
}

Submission Info

Submission Time
Task C - 辞書式順序ふたたび
User mohei
Language Go (1.6)
Score 100
Code Size 1346 Byte
Status AC
Exec Time 39 ms
Memory 5504 KB

Judge Result

Set Name All
Score / Max Score 100 / 100
Status
AC × 58
Set Name Test Cases
All hand_1_0.txt, hand_1_1.txt, hand_1_2.txt, hand_1_3.txt, hand_1_4.txt, hand_1_5.txt, hand_1_6.txt, hand_1_7.txt, hand_1_8.txt, hand_2_0.txt, hand_2_1.txt, hand_2_10.txt, hand_2_2.txt, hand_2_3.txt, hand_2_4.txt, hand_2_5.txt, hand_2_6.txt, hand_2_7.txt, hand_2_8.txt, hand_2_9.txt, hand_3_2.txt, hand_3_3.txt, hand_3_4.txt, hand_3_5.txt, hand_3_6.txt, hand_4_2.txt, hand_4_3.txt, hand_4_4.txt, hand_4_5.txt, hand_4_6.txt, random_1.txt, random_10.txt, random_11.txt, random_12.txt, random_13.txt, random_14.txt, random_15.txt, random_2.txt, random_3.txt, random_4.txt, random_5.txt, random_6.txt, random_7.txt, random_8.txt, random_9.txt, sample_1.txt, sample_2.txt, sample_3.txt, sample_4.txt, small_1.txt, small_2.txt, small_3.txt, small_4.txt, small_5.txt, small_6.txt, small_7.txt, small_8.txt, small_9.txt
Case Name Status Exec Time Memory
hand_1_0.txt AC 1 ms 512 KB
hand_1_1.txt AC 1 ms 512 KB
hand_1_2.txt AC 1 ms 512 KB
hand_1_3.txt AC 1 ms 512 KB
hand_1_4.txt AC 1 ms 512 KB
hand_1_5.txt AC 1 ms 512 KB
hand_1_6.txt AC 1 ms 512 KB
hand_1_7.txt AC 1 ms 512 KB
hand_1_8.txt AC 1 ms 512 KB
hand_2_0.txt AC 1 ms 512 KB
hand_2_1.txt AC 1 ms 512 KB
hand_2_10.txt AC 1 ms 512 KB
hand_2_2.txt AC 1 ms 512 KB
hand_2_3.txt AC 1 ms 512 KB
hand_2_4.txt AC 1 ms 512 KB
hand_2_5.txt AC 1 ms 512 KB
hand_2_6.txt AC 1 ms 512 KB
hand_2_7.txt AC 1 ms 512 KB
hand_2_8.txt AC 1 ms 512 KB
hand_2_9.txt AC 1 ms 512 KB
hand_3_2.txt AC 1 ms 512 KB
hand_3_3.txt AC 1 ms 512 KB
hand_3_4.txt AC 1 ms 512 KB
hand_3_5.txt AC 1 ms 512 KB
hand_3_6.txt AC 1 ms 512 KB
hand_4_2.txt AC 1 ms 640 KB
hand_4_3.txt AC 1 ms 640 KB
hand_4_4.txt AC 1 ms 512 KB
hand_4_5.txt AC 1 ms 512 KB
hand_4_6.txt AC 1 ms 512 KB
random_1.txt AC 2 ms 896 KB
random_10.txt AC 32 ms 5504 KB
random_11.txt AC 28 ms 4736 KB
random_12.txt AC 24 ms 4608 KB
random_13.txt AC 14 ms 3072 KB
random_14.txt AC 5 ms 1280 KB
random_15.txt AC 3 ms 768 KB
random_2.txt AC 4 ms 1408 KB
random_3.txt AC 3 ms 896 KB
random_4.txt AC 9 ms 2304 KB
random_5.txt AC 2 ms 768 KB
random_6.txt AC 10 ms 2560 KB
random_7.txt AC 33 ms 5376 KB
random_8.txt AC 39 ms 5504 KB
random_9.txt AC 37 ms 5376 KB
sample_1.txt AC 1 ms 512 KB
sample_2.txt AC 1 ms 512 KB
sample_3.txt AC 1 ms 512 KB
sample_4.txt AC 1 ms 512 KB
small_1.txt AC 1 ms 512 KB
small_2.txt AC 1 ms 512 KB
small_3.txt AC 1 ms 512 KB
small_4.txt AC 1 ms 512 KB
small_5.txt AC 1 ms 512 KB
small_6.txt AC 1 ms 512 KB
small_7.txt AC 1 ms 512 KB
small_8.txt AC 1 ms 512 KB
small_9.txt AC 1 ms 512 KB