dengxinyi пре 6 година
родитељ
комит
acc363757c

Разлика између датотеке није приказан због своје велике величине
+ 12 - 0
2008/1C/A/A-large-practice.in


+ 19 - 0
2008/1C/A/A-small-practice.in

@@ -0,0 +1,19 @@
+9
+10 2 12
+321320 593495 758204 389639 388723 49152 146438 159949 868760 520432 116410 358316
+10 12 4
+518334 889860 995016 325693
+10 3 27
+808779 198209 150957 57300 482859 135526 338396 891122 485259 828737 326575 583951 526461 230768 889709 307560 775800 471593 3767 491947 425267 930670 424710 548454 286135 565135 898026
+10 10 28
+221794 745397 535166 610516 794548 197956 770465 663308 718387 886874 21623 74311 812449 697845 610957 472093 390882 993897 451152 966169 218416 914982 978252 710090 413498 396545 196780 237706
+3 9 26
+1 1 1 100 100 1 1 1 1 1 1 1 1 1 1 1 1 10 11 11 11 11 1 1 1 100
+10 4 33
+72629 111608 963683 954402 40395 401306 735759 732170 768299 468218 281096 891912 349734 973990 919102 98693 697725 904194 789406 781100 28681 581885 696208 716148 437322 410552 416411 123188 355465 140426 833221 944446 252033
+10 12 54
+383233 246637 929370 434751 857152 723918 632706 627616 903577 867444 30841 441551 941754 843289 139396 69063 831734 46629 579311 799237 12797 797726 714218 991048 24167 127716 903945 737299 881773 928788 437624 781358 175424 366993 216108 32575 607262 365165 176543 27190 748960 207383 468741 690714 567024 124488 276128 915109 171116 855438 714345 700264 169515 428562
+3 2 6
+8 2 5 2 4 9
+10 4 16
+159871 536647 143293 693037 866588 979059 58936 224520 947479 12083 975323 982165 901942 486691 824209 111947

+ 59 - 0
2008/1C/A/main.go

@@ -0,0 +1,59 @@
+package main
+
+import (
+	"bufio"
+	"fmt"
+	"os"
+	"sort"
+)
+
+// IntSlice ...
+type IntSlice []int
+
+func (a IntSlice) Len() int           { return len(a) }
+func (a IntSlice) Less(i, j int) bool { return a[i] > a[j] }
+func (a IntSlice) Swap(i, j int)      { a[i], a[j] = a[j], a[i] }
+
+func leastPress(scanner *bufio.Scanner) []int {
+	caseCnt := ReadInt(scanner)
+	answer := make([]int, caseCnt)
+	for i := 0; i < caseCnt; i++ {
+		params := ReadInts(scanner)
+		// P: maximum cnt to place; K: key cnt; L: alphabet letter cnt.
+		P, K, L := params[0], params[1], params[2]
+		var freq IntSlice = ReadInts(scanner)
+		sort.Sort(freq)
+		for p, j := 0, 0; p < P && j < L; p++ {
+			for k := 0; k < K && j < L; j, k = j+1, k+1 {
+				answer[i] += (p + 1) * freq[j]
+			}
+		}
+	}
+	return answer
+}
+
+func main() {
+	inputFiles := []string{"A-small-practice.in", "A-large-practice.in", "test.in"}
+	outputFiles := []string{"result-small.out", "result-large.out", "test.out"}
+	const (
+		small = iota
+		large
+		test
+	)
+
+	fileType := test
+
+	fin, _ := os.Open(inputFiles[fileType])
+	defer fin.Close()
+
+	scanner := bufio.NewScanner(fin)
+	answer := leastPress(scanner)
+
+	fout, _ := os.Create(outputFiles[fileType])
+	defer fout.Close()
+
+	for i, v := range answer {
+		s := fmt.Sprintf("Case #%d: %d\n", i+1, v)
+		fout.WriteString(s)
+	}
+}

+ 99 - 0
2008/1C/A/result-large.out

@@ -0,0 +1,99 @@
+Case #1: 20236766
+Case #2: 30102796
+Case #3: 52992167
+Case #4: 50650496
+Case #5: 14605906
+Case #6: 1927750
+Case #7: 40775730
+Case #8: 40613724
+Case #9: 500499499500
+Case #10: 42116251
+Case #11: 15073641
+Case #12: 19767068
+Case #13: 34290086
+Case #14: 42851053
+Case #15: 46161065
+Case #16: 47313179
+Case #17: 21445492
+Case #18: 41269657
+Case #19: 37700180
+Case #20: 18348969
+Case #21: 3939412
+Case #22: 31299431
+Case #23: 23566342
+Case #24: 6969557
+Case #25: 5941760
+Case #26: 397
+Case #27: 20379592
+Case #28: 32779102
+Case #29: 81854643
+Case #30: 24466842
+Case #31: 41145659
+Case #32: 20648264
+Case #33: 16495566
+Case #34: 27540074
+Case #35: 15404926
+Case #36: 35873225
+Case #37: 7298339
+Case #38: 38608398
+Case #39: 10295638
+Case #40: 32291655
+Case #41: 36418362
+Case #42: 35830123
+Case #43: 19359872
+Case #44: 36896463
+Case #45: 48266086
+Case #46: 16769280
+Case #47: 8370699
+Case #48: 9142685
+Case #49: 47095953
+Case #50: 49760985
+Case #51: 36499143
+Case #52: 23945374
+Case #53: 28647093
+Case #54: 42150565
+Case #55: 1568884
+Case #56: 30646889
+Case #57: 42248721
+Case #58: 32674942
+Case #59: 2939730
+Case #60: 31830454
+Case #61: 16901569
+Case #62: 11877297
+Case #63: 26057157
+Case #64: 59970
+Case #65: 1933230
+Case #66: 32082316
+Case #67: 26361546
+Case #68: 15123658
+Case #69: 14763866
+Case #70: 3598727
+Case #71: 9229059
+Case #72: 47
+Case #73: 3591621
+Case #74: 1933250
+Case #75: 5747358
+Case #76: 1144330
+Case #77: 40894001
+Case #78: 11327936
+Case #79: 37307532
+Case #80: 5416210
+Case #81: 48886644
+Case #82: 51886421
+Case #83: 10211291
+Case #84: 5666097
+Case #85: 48097462
+Case #86: 32706383
+Case #87: 51959645
+Case #88: 25910559
+Case #89: 21525206
+Case #90: 24646967
+Case #91: 43617900
+Case #92: 36154714
+Case #93: 21721425
+Case #94: 13206740
+Case #95: 23857540
+Case #96: 24479841
+Case #97: 40550763
+Case #98: 258231
+Case #99: 10111289

+ 9 - 0
2008/1C/A/result-small.out

@@ -0,0 +1,9 @@
+Case #1: 11433755
+Case #2: 2728903
+Case #3: 46995866
+Case #4: 24382164
+Case #5: 397
+Case #6: 58569527
+Case #7: 54956207
+Case #8: 47
+Case #9: 15983801

+ 5 - 0
2008/1C/A/test.in

@@ -0,0 +1,5 @@
+2
+3 2 6
+8 2 5 2 4 9
+3 9 26
+1 1 1 100 100 1 1 1 1 1 1 1 1 1 1 1 1 10 11 11 11 11 1 1 1 100

+ 2 - 0
2008/1C/A/test.out

@@ -0,0 +1,2 @@
+Case #1: 47
+Case #2: 397

+ 57 - 0
2008/1C/A/utils.go

@@ -0,0 +1,57 @@
+package main
+
+import (
+	"bufio"
+	"strconv"
+	"strings"
+)
+
+// Pair ...
+type Pair struct {
+	_1 int
+	_2 int
+}
+
+// Pair64 ...
+type Pair64 struct {
+	_1 int64
+	_2 int64
+}
+
+// ReadInt ...
+func ReadInt(s *bufio.Scanner) int {
+	s.Scan()
+	i, _ := strconv.ParseInt(s.Text(), 10, 32)
+	return int(i)
+}
+
+// ReadInt64 ...
+func ReadInt64(s *bufio.Scanner) int64 {
+	s.Scan()
+	i, _ := strconv.ParseInt(s.Text(), 10, 64)
+	return i
+}
+
+// ReadInts ...
+func ReadInts(s *bufio.Scanner) []int {
+	s.Scan()
+	strs := strings.Split(s.Text(), " ")
+	nums := make([]int, len(strs))
+	for i, str := range strs {
+		num, _ := strconv.ParseInt(str, 10, 32)
+		nums[i] = int(num)
+	}
+	return nums
+}
+
+// ReadInt64s ...
+func ReadInt64s(s *bufio.Scanner) []int64 {
+	s.Scan()
+	strs := strings.Split(s.Text(), " ")
+	nums := make([]int64, len(strs))
+	for i, str := range strs {
+		num, _ := strconv.ParseInt(str, 10, 64)
+		nums[i] = num
+	}
+	return nums
+}

Неке датотеке нису приказане због велике количине промена