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

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

Программы на языке C# компилируются на сервере с помощью Microsoft Visual C# Compiler version 2.3.2.62019 (кодовое имя Roslyn), включенного в состав Visual Studio 2017. Он поддерживает язык C# версии 7.1 и платформу .NET Framework 4.7. Компилятор запускается со следующими параметрами:

csc /o+ /d:ONLINE_JUDGE /r:System.Numerics.dll

Размер стека по умолчанию установлен равным 64 МБ.

Примеры решения задач

Вот пример решения задачи A + B на языке C#:

using System;

public class Sum
{
    private static void Main()
    {
        string[] tokens = Console.ReadLine().Split(' ');
        Console.WriteLine(int.Parse(tokens[0]) + int.Parse(tokens[1]));
    }
}

Далее приведен пример простого решения задачи Обратный корень на языке C#. Этот пример иллюстрирует некоторые возможности языка и не является самым эффективным. При посимвольном вводе можно добиться гораздо меньшего времени работы и объема использованной памяти.

using System;
using System.Globalization;

public class ReverseRoot
{
   private static void Main()
   {
      NumberFormatInfo nfi = NumberFormatInfo.InvariantInfo;
      string[] input = Console.In.ReadToEnd().Split(
         new char[] {' ', '\t', '\n', '\r'},
         StringSplitOptions.RemoveEmptyEntries);
      for (int i = input.Length - 1; i >= 0; i--)
      {
         double root = Math.Sqrt(double.Parse(input[i], nfi));
         Console.WriteLine(string.Format(nfi, "{0:F4}", root));
      }
   }
}

Ввод/вывод

Для ввода/вывода на C# не всегда достаточно стандартных методов Console.ReadLine, String.Split и Console.WriteLine. В некоторых задачах потребуется собственная быстрая реализация разбора входных данных и форматирования выходных.

В некоторых задачах числа разделяются не ровно одним пробелом. Поэтому вместо

Console.ReadLine().Trim().Split(' ')

следует использовать

Console.ReadLine().Split(new char[] {' ', '\t'},
   StringSplitOptions.RemoveEmptyEntries)

Не забывайте, что культура по умолчанию может быть любой. Это важно, если вам требуется считать или вывести число с плавающей точкой: разделитель целой и дробной части может быть задан в системе как «.» или как «,». В настоящий момент на сервере настроен разделитель «.», однако это может измениться в будущем. Чтобы не сталкиваться с подобными проблемами, указывайте культуру явно при каждой операции ввода/вывода или установите культуру по умолчанию для всей своей программы:

Thread.CurrentThread.CurrentCulture =
   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).