Submission #1156759
Source Code Expand
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
//using System.Numerics; //comment out if AOJ
using System.Text;
using Problem = Tmp.Problem;
using MyIO;
#pragma warning disable //for AOJ
namespace Tmp
{
class Problem : IDisposable
{
bool IsGCJ;
int Repeat;
Scanner sc;
Printer pr;
public Problem(bool isGCJ, Scanner scanner, Printer printer)
{
sc = scanner;
pr = printer;
IsGCJ = isGCJ;
if (isGCJ) Repeat = sc.nextInt();
else Read();
}
public Problem(bool isGCJ) : this(isGCJ, new Scanner(), new Printer()) { }
public Problem(bool isGCJ, Scanner scanner) : this(isGCJ, scanner, new Printer()) { }
public Problem(bool isGCJ, Printer printer) : this(isGCJ, new Scanner(), printer) { }
public void Solve()
{
if (IsGCJ) for (var i = 0; i < Repeat; i++) { Read(); pr.Write("Case #" + (i + 1) + ": "); SolveOne(); }
else SolveOne();
}
public void Dispose()
{
sc.Dispose();
pr.Dispose();
}
public int Size { get { return 1; } }
public const long Mod = 1000000007;
// 使用する変数をここに書く
// string S;
// int a;
/// <summary>
/// 読み込み処理をここに書く
/// </summary>
void Read()
{
}
/// <summary>
/// メイン処理をここに書く
/// </summary>
void SolveOne()
{
int n = sc.nextInt();
long[] a = sc.nextLong(n);
Array.Sort(a);
long[] imos = new long[n];
bool[] ok = new bool[n];
imos[0] = a[0];
for (int i = 1; i < n; i++)
{
imos[i] = imos[i - 1] + a[i];
}
int ans = 1;
ok[n - 1] = true;
for (int i = n - 2; i >= 0; i--)
{
if (ok[i + 1] == true && imos[i] * 2 >= a[i + 1])
{
ok[i] = true;
ans++;
}
else break;
}
Console.WriteLine(ans);
}
}
}
class Program
{
//public static RandomSFMT rand = new RandomSFMT();
public static bool IsJudgeMode = true;
public static bool IsGCJMode = false;
public static bool IsSolveCreated = true;
static void Main()
{
if (IsJudgeMode)
if (IsGCJMode) using (var problem = new Problem(true, new Scanner("C-large-practice.in.txt"), new Printer("output.txt"))) problem.Solve();
else using (var problem = new Problem(false, new Printer())) problem.Solve();
else
{
var num = 1;
int size = 0;
decimal time = 0;
for (var tmp = 0; tmp < num; tmp++)
{
using (var P = IsSolveCreated ? new Problem(false, new Scanner("input.txt"), new Printer()) : new Problem(false))
{
size = P.Size;
//time += Func.MeasureTime(() => P.Solve());
}
}
Console.WriteLine("{0}, {1}ms", size, time / num);
}
}
}
/// <summary>
/// カスタマイズしたIO
/// </summary>
namespace MyIO
{
class Printer : IDisposable
{
bool isConsole;
TextWriter file;
public Printer() { file = new StreamWriter(Console.OpenStandardOutput()) { AutoFlush = false }; isConsole = true; }
public Printer(string path) { file = new StreamWriter(path, false) { AutoFlush = false }; isConsole = false; }
public void Write<T>(T value) { file.Write(value); }
public void Write(bool b) { file.Write(b ? "YES" : "NO"); }
public void Write(string str, params object[] args) { file.Write(str, args); }
public void WriteLine() { file.WriteLine(); }
public void WriteLine<T>(T value) { file.WriteLine(value); }
public void WriteLine(bool b) { file.WriteLine(b ? "YES" : "NO"); }
public void WriteLine<T>(IEnumerable<T> list) { foreach (var x in list) file.WriteLine(x); }
public void WriteLine<T>(List<T> list) { foreach (var x in list) file.WriteLine(x); }
public void WriteLine<T>(T[] list) { foreach (var x in list) file.WriteLine(x); }
public void WriteLine(string str, params object[] args) { file.WriteLine(str, args); }
public void Dispose() { file.Flush(); if (!isConsole) file.Dispose(); }
}
class Scanner : IDisposable
{
bool isConsole;
TextReader file;
public Scanner() { file = Console.In; }
public Scanner(string path) { file = new StreamReader(path); isConsole = false; }
public void Dispose() { if (!isConsole) file.Dispose(); }
#region next読み込み
string[] nextBuffer = new string[0];
int BufferCnt = 0;
char[] cs = new char[] { ' ' };
public string next()
{
while (BufferCnt >= nextBuffer.Length)
{
string st = file.ReadLine();
while (st == "") st = file.ReadLine();
nextBuffer = st.Split(cs, StringSplitOptions.RemoveEmptyEntries);
BufferCnt = 0;
}
return nextBuffer[BufferCnt++];
}
public int nextInt()
{
return int.Parse(next());
}
public long nextLong()
{
return long.Parse(next());
}
public double nextDouble()
{
return double.Parse(next());
}
private T[] enumerate<T>(int n, Func<T> f)
{
var a = new T[n];
for (int i = 0; i < n; ++i) a[i] = f();
return a;
}
public string[] next(int n) { return enumerate(n, next); }
public double[] nextDouble(int n) { return enumerate(n, nextDouble); }
public int[] nextInt(int n) { return enumerate(n, nextInt); }
public long[] nextLong(int n) { return enumerate(n, nextLong); }
#endregion
}
}
Submission Info
Submission Time |
|
Task |
B - Colorful Creatures |
User |
yu3mars |
Language |
C# (Mono 4.6.2.0) |
Score |
400 |
Code Size |
6455 Byte |
Status |
AC |
Exec Time |
89 ms |
Memory |
26588 KB |
Judge Result
Set Name |
Sample |
All |
Score / Max Score |
0 / 0 |
400 / 400 |
Status |
|
|
Set Name |
Test Cases |
Sample |
sample1.txt, sample2.txt, sample3.txt |
All |
sample1.txt, sample2.txt, sample3.txt, in1.txt, in10.txt, in11.txt, in12.txt, in13.txt, in2.txt, in3.txt, in4.txt, in5.txt, in6.txt, in7.txt, in8.txt, in9.txt, sample1.txt, sample2.txt, sample3.txt |
Case Name |
Status |
Exec Time |
Memory |
in1.txt |
AC |
89 ms |
19936 KB |
in10.txt |
AC |
47 ms |
14176 KB |
in11.txt |
AC |
83 ms |
20960 KB |
in12.txt |
AC |
84 ms |
26588 KB |
in13.txt |
AC |
84 ms |
26588 KB |
in2.txt |
AC |
86 ms |
17888 KB |
in3.txt |
AC |
87 ms |
21984 KB |
in4.txt |
AC |
87 ms |
19936 KB |
in5.txt |
AC |
48 ms |
13792 KB |
in6.txt |
AC |
76 ms |
16096 KB |
in7.txt |
AC |
86 ms |
17888 KB |
in8.txt |
AC |
75 ms |
18144 KB |
in9.txt |
AC |
32 ms |
10336 KB |
sample1.txt |
AC |
25 ms |
11220 KB |
sample2.txt |
AC |
24 ms |
9172 KB |
sample3.txt |
AC |
24 ms |
9172 KB |