Submission #6930739
Source Code Expand
using System; using System.Text; using System.Linq; using System.Collections; using System.Collections.Generic; using static System.Console; using static System.Math; namespace AtCorder { public class Program { public static void Main(string[] args) { new Program().Solve(new ConsoleInput(Console.In, ' ')); } public void Solve(ConsoleInput cin) { var N = cin.ReadInt; var A = cin.ReadInt; var B = cin.ReadInt; var v = cin.ReadLongArray(N); Array.Sort(v); Array.Reverse(v); var Select = v.Take(A).ToArray(); var MaxAve = Select.Average(); var X = v.Where(p => p == v[A - 1]).ToArray().Length; var Y = v.Take(A).Where(a => a == v[A - 1]).ToArray().Length; var match = 0UL; if (v[0] != v[A - 1]) { match = (UInt64)C(X, Y); } else { for (int i = A; i <= B; i++) { match += (UInt64)C(X, i); } } WriteLine(MaxAve); WriteLine(match); } public long C(int X, int Y) { if (Y == 0 || Y == X) { return 1; } if(X < Y) { return 0; } var Pascal = new long[X + 1, X + 1]; for (int i = 0; i <= X; i++) { Pascal[i, 0] = 1L; Pascal[i, i] = 1L; } for (int i = 2; i <= X; i++) { for (int j = 1; j < i; j++) { Pascal[i, j] = Pascal[i - 1, j] + Pascal[i - 1, j - 1]; } } return Pascal[X, Y]; } public class ConsoleInput { private readonly System.IO.TextReader _stream; private char _separator = ' '; private Queue<string> inputStream; public ConsoleInput(System.IO.TextReader stream, char separator = ' ') { this._separator = separator; this._stream = stream; inputStream = new Queue<string>(); } public string Read { get { if (inputStream.Count != 0) return inputStream.Dequeue(); string[] tmp = _stream.ReadLine().Split(_separator); for (int i = 0; i < tmp.Length; ++i) inputStream.Enqueue(tmp[i]); return inputStream.Dequeue(); } } public string ReadLine { get { return _stream.ReadLine(); } } public int ReadInt { get { return int.Parse(Read); } } public long ReadLong { get { return long.Parse(Read); } } public double ReadDouble { get { return double.Parse(Read); } } public string[] ReadStrArray(long N) { var ret = new string[N]; for (long i = 0; i < N; ++i) ret[i] = Read; return ret; } public int[] ReadIntArray(long N) { var ret = new int[N]; for (long i = 0; i < N; ++i) ret[i] = ReadInt; return ret; } public long[] ReadLongArray(long N) { var ret = new long[N]; for (long i = 0; i < N; ++i) ret[i] = ReadLong; return ret; } } } }
Submission Info
Submission Time | |
---|---|
Task | D - Maximum Average Sets |
User | Naoki08 |
Language | C# (Mono 4.6.2.0) |
Score | 400 |
Code Size | 3555 Byte |
Status | AC |
Exec Time | 44 ms |
Memory | 13524 KB |
Judge Result
Set Name | Sample | All | ||||
---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 400 / 400 | ||||
Status |
|
|
Set Name | Test Cases |
---|---|
Sample | sample_01.txt, sample_02.txt, sample_03.txt, sample_04.txt |
All | sample_01.txt, sample_02.txt, sample_03.txt, sample_04.txt, subtask_1_1.txt, subtask_1_10.txt, subtask_1_11.txt, subtask_1_12.txt, subtask_1_13.txt, subtask_1_14.txt, subtask_1_15.txt, subtask_1_2.txt, subtask_1_3.txt, subtask_1_4.txt, subtask_1_5.txt, subtask_1_6.txt, subtask_1_7.txt, subtask_1_8.txt, subtask_1_9.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
sample_01.txt | AC | 44 ms | 12628 KB |
sample_02.txt | AC | 30 ms | 11476 KB |
sample_03.txt | AC | 29 ms | 11476 KB |
sample_04.txt | AC | 32 ms | 12512 KB |
subtask_1_1.txt | AC | 29 ms | 9428 KB |
subtask_1_10.txt | AC | 30 ms | 13524 KB |
subtask_1_11.txt | AC | 30 ms | 11744 KB |
subtask_1_12.txt | AC | 30 ms | 11744 KB |
subtask_1_13.txt | AC | 30 ms | 13524 KB |
subtask_1_14.txt | AC | 30 ms | 13524 KB |
subtask_1_15.txt | AC | 30 ms | 13524 KB |
subtask_1_2.txt | AC | 30 ms | 11604 KB |
subtask_1_3.txt | AC | 29 ms | 11476 KB |
subtask_1_4.txt | AC | 29 ms | 11604 KB |
subtask_1_5.txt | AC | 30 ms | 11476 KB |
subtask_1_6.txt | AC | 30 ms | 13500 KB |
subtask_1_7.txt | AC | 29 ms | 9428 KB |
subtask_1_8.txt | AC | 29 ms | 11476 KB |
subtask_1_9.txt | AC | 29 ms | 11456 KB |