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;

История версий

Имя С По Язык Среда
C# .NET 2.0 31 декабря 2006 года 8 февраля 2009 года C# 2.0 .NET Framework 2.0
C# .NET 3.5 8 февраля 2009 года 4 августа 2010 года C# 3.0 .NET Framework 3.5
C# .NET 4.0 4 августа 2010 года 21 сентября 2015 года C# 4.0 .NET Framework 4.0
VB .NET 4.0 18 февраля 2013 года 1 сентября 2017 года VB 10.0 .NET Framework 4.0
C# .NET 4.5 21 сентября 2015 года 1 сентября 2017 года C# 5.0 .NET Framework 4.5
C# .NET 4.7 1 сентября 2017 года 1 сентября 2019 года C# 7.1 .NET Framework 4.7
C# .NET 4.7.2 1 сентября 2019 года 1 сентября 2020 года C# 7.1 .NET Framework 4.7.2
C# .NET Core 3.1 1 сентября 2020 года 22 января 2024 года C# 8.0 .NET Core 3.1.4
C# .NET 8 22 января 2024 года C# 12.0 .NET 8.0.0