結果
| 問題 |
No.702 中央値を求めよ LIMITED
|
| コンテスト | |
| ユーザー |
mban
|
| 提出日時 | 2018-06-15 23:03:59 |
| 言語 | C#(csc) (csc 3.9.0) |
| 結果 |
AC
|
| 実行時間 | 224 ms / 5,000 ms |
| コード長 | 2,761 bytes |
| コンパイル時間 | 1,234 ms |
| コンパイル使用メモリ | 112,816 KB |
| 実行使用メモリ | 19,328 KB |
| 最終ジャッジ日時 | 2024-11-22 22:06:40 |
| 合計ジャッジ時間 | 8,328 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 25 |
コンパイルメッセージ
Microsoft (R) Visual C# Compiler version 3.9.0-6.21124.20 (db94f4cc) Copyright (C) Microsoft Corporation. All rights reserved.
ソースコード
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Runtime.Remoting.Contexts;
namespace Contest
{
class Scanner
{
private string[] line = new string[0];
private int index = 0;
public string Next()
{
if (line.Length <= index)
{
line = Console.ReadLine().Split(' ');
index = 0;
}
var res = line[index];
index++;
return res;
}
public int NextInt()
{
return int.Parse(Next());
}
public long NextLong()
{
return long.Parse(Next());
}
public string[] Array()
{
line = Console.ReadLine().Split(' ');
index = line.Length;
return line;
}
public int[] IntArray()
{
var array = Array();
var result = new int[array.Length];
for (int i = 0; i < array.Length; i++)
{
result[i] = int.Parse(array[i]);
}
return result;
}
public long[] LongArray()
{
var array = Array();
var result = new long[array.Length];
for (int i = 0; i < array.Length; i++)
{
result[i] = long.Parse(array[i]);
}
return result;
}
public uint NextUint()
{
return uint.Parse(Next());
}
}
class Program
{
private uint Seed;
private uint x = 0, y = 1, z = 2, w = 3;
private void Scan()
{
var sc = new Scanner();
Seed = sc.NextUint();
}
uint Generate()
{
uint t = (x ^ (x << 11));
x = y;
y = z;
z = w;
w = (w ^ (w >> 19)) ^ (t ^ (t >> 8));
return w;
}
public void Solve()
{
Scan();
x = Seed;
int length = 10000001;
uint min = int.MaxValue - 50000000;
uint max = (uint)int.MaxValue + 50000000;
int Cnt = 0;
List<uint> l = new List<uint>();
for (int i = 0; i < length; i++)
{
var u = Generate();
if (max < u) continue;
if (min > u)
{
Cnt++;
}
else
{
l.Add(u);
}
}
l.Sort();
Console.WriteLine(l[length / 2 - Cnt]);
}
static void Main() => new Program().Solve();
}
}
mban