package main import ( "bufio" "fmt" "os" "strconv" "strings" ) type Scanner struct { reader *bufio.Reader buffer []string pointer int } func NewScanner() *Scanner { return &Scanner{ reader: bufio.NewReaderSize(os.Stdin, 4096), pointer: 0, } } func (self *Scanner) NextLine() string { var buffer []byte for { line, isPrefix, _ := self.reader.ReadLine() buffer = append(buffer, line...) if !isPrefix { break } } return string(buffer) } func (self *Scanner) Next() string { if self.pointer >= len(self.buffer) { line := self.NextLine() self.buffer = strings.Fields(line) self.pointer = 0 } self.pointer++ return self.buffer[self.pointer-1] } func (self *Scanner) NextInt() int { s := self.Next() i, _ := strconv.ParseInt(s, 10, 32) return int(i) } func (self *Scanner) NextLong() int64 { s := self.Next() l, _ := strconv.ParseInt(s, 10, 64) return int64(l) } func (self *Scanner) NextFloat() float32 { s := self.Next() f, _ := strconv.ParseFloat(s, 32) return float32(f) } func (self *Scanner) NextDouble() float64 { s := self.Next() d, _ := strconv.ParseFloat(s, 64) return float64(d) } func SwapInt(x, y *int) { tmp := *x *x = *y *y = tmp } func SwapStr(x, y *string) { tmp := *x *x = *y *y = tmp } func main() { cin := NewScanner() A := cin.NextInt() B := cin.NextInt() C := cin.NextInt() a, b, c := "A", "B", "C" if A < B { SwapInt(&A, &B) SwapStr(&a, &b) } if B < C { SwapInt(&B, &C) SwapStr(&b, &c) } if A < B { SwapInt(&A, &B) SwapStr(&a, &b) } fmt.Println(a) fmt.Println(b) fmt.Println(c) }