Программы на языке C# компилируются на сервере с помощью .NET 8.0 (.NET SDK 8.0.100 x64, C# 12). Компилятор запускается со следующими параметрами:
dotnet.exe csc.dll -optimize+ -define:ONLINE_JUDGE %1
Размер стека по умолчанию установлен равным 1 МБ.
Примеры решения задач
Вот пример решения задачи A + B на языке C#:
var tokens = Console.ReadLine().Split();
var a = int.Parse(tokens[0]);
var b = int.Parse(tokens[1]);
Console.WriteLine(a + b);
Далее приведен пример простого решения задачи Обратный корень на языке C#. Этот пример иллюстрирует некоторые возможности языка и не является самым эффективным. При посимвольном вводе можно добиться гораздо меньшего времени работы и объема использованной памяти.
System.Globalization.CultureInfo.DefaultThreadCurrentCulture =
System.Globalization.CultureInfo.InvariantCulture;
var result = Console.In.ReadToEnd()
.Split()
.Where(s => s != "")
.Select(double.Parse)
.Reverse()
.Select(Math.Sqrt);
foreach (var d in result)
Console.WriteLine($"{d:0.####}");
Ввод/вывод
Для ввода/вывода на C# не всегда достаточно стандартных методов Console.ReadLine
, String.Split
и Console.WriteLine
. В некоторых задачах потребуется собственная быстрая реализация разбора входных данных и форматирования выходных.
В некоторых задачах числа разделяются не ровно одним пробелом. Поэтому вместо
Console.ReadLine().Split()
следует использовать
Console.ReadLine().Split().Where(s => s != "")
Не забывайте, что культура по умолчанию может быть любой. Это важно, если вам требуется считать или вывести число с плавающей точкой: разделитель целой и дробной части может быть задан в системе как «.» или как «,». В настоящий момент на сервере настроен разделитель «.», однако это может измениться в будущем. Чтобы не сталкиваться с подобными проблемами, указывайте культуру явно при каждой операции ввода/вывода или установите культуру по умолчанию для всей своей программы:
System.Globalization.CultureInfo.DefaultThreadCurrentCulture =
System.Globalization.CultureInfo.InvariantCulture;
Прежние компиляторы
- С 31 декабря 2006 года по 8 февраля 2009 года использовался Microsoft Visual C# 2005 версии 8.00.50727.42 (.NET 2.0).
- До 4 августа 2010 года использовался Microsoft Visual C# 2008 Compiler версии 3.5.30729.1 (.NET 3.5).
- До 1 сентября 2017 года использовался Microsoft Visual C# 2010 Compiler версии 4.0.30319.1 (.NET 4.0).
- С 18 февраля 2013 года по 1 сентября 2017 года использовался Microsoft Visual Basic 2010 (.NET 4.0).
- До 1 сентября 2020 года использовался Visual C# 2017 (Roslyn 2.3.2 / C# 7.1 / .NET 4.7).
- До 22 января 2024 года использовался Visual C# 2019 (Roslyn 3.6.0 / C# 8.0 / .NET Core 3.1).