結果
| 問題 | 
                            No.938 賢人を探せ
                             | 
                    
| コンテスト | |
| ユーザー | 
                             kat0rik
                         | 
                    
| 提出日時 | 2020-01-06 13:00:03 | 
| 言語 | Go  (1.23.4)  | 
                    
| 結果 | 
                             
                                AC
                                 
                             
                            
                         | 
                    
| 実行時間 | 405 ms / 2,000 ms | 
| コード長 | 879 bytes | 
| コンパイル時間 | 11,779 ms | 
| コンパイル使用メモリ | 219,316 KB | 
| 実行使用メモリ | 14,172 KB | 
| 最終ジャッジ日時 | 2024-12-14 11:55:55 | 
| 合計ジャッジ時間 | 15,757 ms | 
| 
                            ジャッジサーバーID (参考情報)  | 
                        judge4 / judge2 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 2 | 
| other | AC * 21 | 
ソースコード
package main
import (
	"fmt"
	"sort"
)
type student struct {
	id   int
	name string
	bad  bool
}
type sts []student
func (s sts) Len() int {
	return len(s)
}
func (s sts) Less(i, j int) bool {
	return s[i].id < s[j].id
}
func (s sts) Swap(i, j int) {
	s[i], s[j] = s[j], s[i]
}
func main() {
	var N int
	fmt.Scan(&N)
	students := make(map[string]student, 0)
	for i := 0; i < N; i++ {
		sta := new(student)
		stb := new(student)
		fmt.Scan(&sta.name, &stb.name)
		if v, ok := students[sta.name]; !ok {
			sta.id = i
			sta.bad = true
			students[sta.name] = *sta
		} else {
			v.bad = true
			students[sta.name] = v
		}
		if _, ok := students[stb.name]; !ok {
			stb.id = i
			students[stb.name] = *stb
		}
	}
	a := make([]student, 0)
	for _, v := range students {
		if !v.bad {
			a = append(a, v)
		}
	}
	sort.Sort(sts(a))
	for i := range a {
		fmt.Println(a[i].name)
	}
}
            
            
            
        
            
kat0rik