結果
| 問題 | No.702 中央値を求めよ LIMITED | 
| コンテスト | |
| ユーザー |  aru aru | 
| 提出日時 | 2020-11-23 23:03:45 | 
| 言語 | Go (1.23.4) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 376 ms / 5,000 ms | 
| コード長 | 711 bytes | 
| コンパイル時間 | 16,217 ms | 
| コンパイル使用メモリ | 233,144 KB | 
| 実行使用メモリ | 20,012 KB | 
| 最終ジャッジ日時 | 2024-11-22 22:56:26 | 
| 合計ジャッジ時間 | 25,455 ms | 
| ジャッジサーバーID (参考情報) | judge1 / judge5 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 2 | 
| other | AC * 25 | 
ソースコード
package main
import (
	"fmt"
	"sort"
)
var x, y, z, w uint32 = 0, 1, 2, 3
func generate() uint32 {
	t := (x ^ (x << 11))
	x = y
	y = z
	z = w
	w = (w ^ (w >> 19)) ^ (t ^ (t >> 8))
	return w
}
const size = 10000001
func main() {
	// this template is new version.
	// use getI(), getS(), getInts(), getF()
	var seed int
	fmt.Scanf("%d", &seed)
	x = uint32(seed)
	a := make([]uint32, 0)
	l, r := 0, 0
	for i := 0; i < size; i++ {
		w = generate()
		if w < 0x70000000 {
			l++
		} else if w < 0x90000000 {
			a = append(a, w)
		} else {
			r++
		}
	}
	sort.Slice(a, func(i, j int) bool {
		return a[i] < a[j]
	})
	// fmt.Println(len(a), l, r, l+r+len(a))
	fmt.Println(a[size/2-l])
	//	fmt.Println(a[size/2])
}
            
            
            
        