ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила

Как писать решения на C#

Программы на языке 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).