結果
| 問題 | No.433 ICPC国内予選の選抜ルールがこんな感じだったらうれしい |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2016-10-15 00:08:09 |
| 言語 | C#(csc) (csc 3.9.0) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 2,469 bytes |
| 記録 | |
| コンパイル時間 | 2,364 ms |
| コンパイル使用メモリ | 114,620 KB |
| 実行使用メモリ | 74,684 KB |
| 最終ジャッジ日時 | 2024-11-22 08:26:19 |
| 合計ジャッジ時間 | 185,546 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 14 TLE * 34 |
コンパイルメッセージ
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.Threading.Tasks;
namespace yuki_433
{
class Program
{
static int N, K;
static HashSet<University> L = new HashSet<University>();
static int[] C = new int[100001];
static bool flag;
static void Main(string[] args)
{
var sb = new StringBuilder();
var t = scan;
N = t[0]; K = t[1];
for (int i = 0; i < N; i++)
{
t = scan;
L.Add(new University(i, t[0], t[1], t[2]));
}
var A = L.OrderByDescending(l => l.S).ToArray();
var d = 0;
var T = A;
while (true)
{
T = A.Skip(d).ToArray();
int cnt = LowerBound(T, T[0].S);
//Console.WriteLine(cnt);
T = T.Take(cnt).ToArray();
d += cnt;
//Console.WriteLine(T.Count()+" "+T[0].S);
if(d >= K)
{
cnt -= d - K;
flag = true;
}
for (int j = 0; j < cnt; j++)
{
T = T.OrderBy(a => C[a.U]).ThenBy(a => a.P).ToArray();
sb.AppendLine(T[0].Num.ToString());
C[T[0].U]++;
T = T.Skip(1).ToArray();
}
if (flag)
{
Console.Write(sb);
return;
}
}
}
class University
{
internal int Num, S, P, U;
public University(int Num, int S, int P, int U)
{
this.Num = Num;
this.S = S;
this.P = P;
this.U = U;
}
}
static int LowerBound(University[] arr, int val)
{
int low = 0, high = arr.Count();
int mid;
while (low < high)
{
mid = ((high - low) >> 1) + low;
if (arr[mid].S >= val) low = mid + 1;
else high = mid;
}
return low;
}
static int[] scan { get { return Array.ConvertAll(Console.ReadLine().Split(), int.Parse); } }
}
}