printРабочее место участника

printПомощь

Ввод-вывод в посылаемых решениях

Формат входного файла соответствует спецификации, дополнительные проверки не нужны. Все строки, в том числе последняя, оканчиваются символом перехода на новую строку (EOLN в Pascal, '\n' в С/С++).

Во всех задачах ввод осуществляется из стандартного ввода (stdin, т.е. клавиатура, но без USE CRT), а вывод на стандартный вывод (stdout, т.е. экран). Допускается ввод из файла и вывод в файл (имена файлов указаны в условии задачи, например, "input.txt" и "output.txt" или "data.in" и "data.out"). Нельзя открывать никаких других файлов, это может привести только к ошибке времени исполнения (RT).
При использовании ввода-вывода из файлов имена файлов должны быть написаны строчными буквами и не содержать путей.
input.txt – правильно
output.txt – правильно

INPUT.TXT – неправильно!
c:\work\output.txt – неправильно!
Программа на выполнение запускается по команде:
program <input.txt >output.txt
поэтому в программе не должно быть подсказок для ввода и отладочной печати.
При вводе данных нельзя выводить подсказки на ввод.
write('Уважаемый компьютер, введите, пожалуйста, значение n:'); { неправильно! }
read(n);

read(n); { правильно }

При выводе результатов пояснительные сообщения также выводить нельзя, кроме тех, которые явно указаны в формате выходных данных в условии задачи.
writeln('Результат=',rez); { неправильно! }

writeln(rez); { правильно }
Ввод двух чисел a и b, находящихся в одной строке и разделенных пробелом.
В языке Pascal:
var a,b:integer;

readln(a,b); { правильно }

read(a); { правильно }
readln(b);

readln(a); { неправильно! }
readln(b);

В языке Basic:
INPUT A ' правильно
INPUT B

INPUT A,B ' неправильно!

INPUT S$ ' неправильно!
далее сложный код с разделением строки S$ на подстроки и функцией VAL
Смотрите также Примеры программ

Компиляторы

Для проверки решений используются компиляторы Free Pascal 3.0 (совместим с Delphi/Turbo Pascal), GNU C/C++ 11.3, Free Basic 1.0 (совместим с Quick Basic), GNU Prolog 1.4, Chicken Scheme 4.13, Haskell 8.0, Python 3.10, OpenJava SE 1.8, Kotlin 1.6, Mono C# 6.12, Visual Basic 4.8, PascalABC.NET 3.8, Lua 5.4, LuaJIT 2.0 (Lua 5.1), QuickJS (ECMA/JavaScript 2020), Bison 3.0.5, RE/flex 1.0.4
Опции компиляции:
Cgcc -Wall -static -std=gnu17 -s -O2 -o program program.c -lm
C++g++ -Wall -static -std=gnu++20 -s -O2 -o program program.cpp -lm
Free Pascalfpc -Sd -Cr -Ct -Ci -XS -O2 -vw program.pas
PascalABC.NETpabcnetcclear.exe program.pas
C#mcs -optimize program.cs
Basicfbc -lang qb program.bas
Visual Basicvbnc program.vb
Javajavac program.java
Prologgplc -o program --min-bips program.pl
Schemecsc -static -ignore-case program.scm
Haskellghc -optl-static -optl-pthread program.hs
Pythonpython -I -m py_compile program.py
Lualuac -o program.luac program.lua
luajit -b program.lua program.o
Kotlinkotlinc program.kt -jvm-target 1.8 -include-runtime -d program.jar
ECMAScriptqjsc -e program.js
Bisonbison -oprogram.cpp program.lex
RE/flexreflex --flex -oprogram.cpp program.grm
Для C++ установлена библиотека шаблонов boost.multiprecision для работы с длинными целыми и рациональными числами (cpp_int, cpp_dec_float, cpp_rational) и библиотека format из C++20.
В языках C#/Visual Basic разрешен только ввод-вывод через Console и запрещены некоторые пространства имен и классы. Получение доступа к пространствам имен только через using/imports.
Аналогично запрещены некоторые модули и функции в языке Python (из sys только stdin, stdout, setrecursionlimit, exit, maxsize, argv, int info, float info, byteorder, maxunicode, setdefaultencoding), ввод-вывод только через print, input и stdin/stdout. В Python добавлен модуль pcio, содержащий упрощенные функции: input для форматированного ввода (аналог Lua и QuickJS), print/println для вывода (аналог C# Console.Write/WriteLine) и encoding для установки кодировки.
В Lua запрещены некоторые модули и функции. В LuaJIT можно применять предзагруженный модуль bit для поразрядных операций.
В ECMAScript для ввода используется функция input(), возвращающая очередную строку ввода или null, для вывода – функция print(значение).
В ограничениях времени в условиях задачи первое число указано для компилируемых языков C/C++/Free Pascal/GNU Prolog/Haskell, второе число – для интерпретируемых/JIT языков. По умолчанию второе время в 2 раза больше и не менее 0.5 секунды. Иногда второе ограничение может быть установлено по времени работы эталонного решения на JIT-языке.

Интерпретация сообщений

ОбозначениеСообщениеВозможная причина и действия
ACПринятаЖюри не смогло найти ошибку в вашей программе, переходите к следующей задаче.
OKПринятаИспользуется только на личных соревнованиях – программа прошла тест из условия задачи. Основная проверка будет выполнена после завершения соревнования.
CEОшибка компиляцииСинтаксическая ошибка в программе, возможно вы неверно указали язык программирования при отправке решения или используете конструкции языка, не соответствующие стандарту. Посмотрите листинг ошибок компиляции для определения строк с ошибкой. За эту ошибку не добавляется штраф.
NOТест #: сообщениеИспользуется только на личных соревнованиях – программа не прошла тест из условия задачи. Смысл возможных сообщений рассмотрен ниже.
WAТест #: неверный ответ Неверный алгоритм решения. Протестируйте программу и найдите ошибку.
TLТест #: превышение предела времени Неэффективное решение, ошибка в в условии выхода из цикла или ожидание нажатия клавиши в конце программы. Проверьте программу на больших тестах.
MLТест #: превышение предела памяти Программа использует слишком много памяти. Используйте более эффективные способы для хранения информации.
RTТест #: ошибка времени исполнения 1) Ошибка типа выхода за границу массива, деления на 0 или логарифма от отрицательного числа; 2) Программа на Си не завершается оператором return 0; 3) Завершение программы с ненулевым кодом с помощью функций exit(1) или halt(1); 4) превышение предела памяти
PEТест #: ошибка представления Формат выходного файла не соответствует требованиям в условии задачи.
Первый тест во многих задачах соответствует примеру в условии задачи. При получении ошибки на первом тесте нужно проверить работу своей программы на этом примере.

Примеры программ

Ограничения: время – 1s/2s, память – 64MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод copy
Послать решение Blockly Посылки Темы Где Обсудить (0)

Задача
Написать программу, которая вычисляет сумму двух целых чисел.
В первой строке ввода содержатся два целых числа, разделенных пробелом.
В первой строке вывода вывести одно целое число – сумму чисел.
Программа на C
#include <stdio.h>
int main()
{ int a,b;
  scanf("%d%d",&a,&b); /* Никаких подсказок на ввод! */
  printf("%d\n",a+b); /* Только число, как указано в условии */
  return 0; /* Обязательно вернуть 0! */
} 
Программа на C++
#include <iostream> // По стандарту без .h!
using namespace std;
int main()
{ int a,b;
  ios::sync_with_stdio(0); // для ускорения ввода
  cin.tie(0);
  cin>>a>>b;
  cout<<(a+b)<<"\n";
  return 0;
}
Программа на Pascal
var a,b:integer;
begin
  read(a,b); { Никаких подсказок на ввод! }
  writeln(a+b); { Только число, как указано в условии }
end.
Программа на Prolog
:-initialization(main).
main:-
  read_integer(A),
  read_integer(B),
  C is A+B,
  write(C),nl.
Программа на Scheme
(let ((A (read))
    (B (read)))
  (display (+ A B))
  (newline)
)
Программа на Haskell
main = do
       nums <- fmap (map read.words) getLine
       print (nums!!0 + nums!!1)
Программа на Java
import java.util.*;
class program {
 public static Scanner in = new Scanner(System.in);
 static public void main(String []args){
    int a,b;
    a = in.nextInt(); 
    b = in.nextInt(); 
    System.out.println(a+b);
  }
}
Программа на Python
a,b=map(int,input().split())
print(a+b)
С указанием кодировки, если нужен ввод или вывод русского текста:
import pcio
pcio.encoding('cp1251')
a,b=pcio.input('ii')
pcio.println(a+b)
Программа на C#
using System;
using System.Text;
using System.Globalization;

namespace MyApplication
{
  class Program
  {
     static void Main() 
     {  Console.InputEncoding = Encoding.GetEncoding(1251); // для чтения или вывода русского текста
        Console.OutputEncoding = Encoding.GetEncoding(1251);
        CultureInfo.DefaultThreadCurrentCulture = new CultureInfo("en-US"); // для ввода и вывода вещественных чисел
        int[] nums = Array.ConvertAll(Console.ReadLine().Split(new char[] { ' ' },
                    StringSplitOptions.RemoveEmptyEntries), s=>Convert.ToInt32(s));
        Console.WriteLine((nums[0]+nums[1]).ToString());
     }
  }
}
Программа на Kotlin
fun main(args: Array<String>) {
    val (a,b)=readLine()!!.split(" ").map{ it.toInt() }
    println("${a+b}")
}
Программа на Basic
input a
input b 
print a+b
end
Программа на Visual Basic
Module MyProgram
   Sub Main() 
      Dim A as integer, B as integer
      Dim Items() as String = Split(Console.ReadLine())
      A=Val(Items(0))
      B=Val(Items(1))
      Console.WriteLine(Str(A+B))
   End Sub
End Module
Программа на Lua
a,b = io.read("n", "n")
print(a+b)
В LuaJIT реализована устаревшая версия LUA 5.1 и, в частности, нужно указывать формат "*n" вместо "n".
Программа на ECMAScript (QuickJS)
var [a,b]=input('nn') // аналог ввода Lua
print(a+b)
В качестве аргумента input можно указать число – количество вводимых символов или формат – непустую последовательность символов: 'l' – ввод строки без символа перехода на новую строку, 'L' – ввод строки, включая символ перехода на новую строку, 'n' – ввод числа, 'w' – ввод слова до пробельных символов, 'c' – ввод символа, 'a' – ввод всего текста до конца файла. Для ввода массива первым аргументом нужно указать количество элементов массива, вторым –- формат. При вызове без аргументов вводится строка ('l').
Другой вариант (у parseInt может быть 2 аргумента, поэтому используем parseFloat)
var [a,b]=std.in.getline().split(' ').map(parseFloat)
print(a+b)
Программа на Rust
fn main() {
    let cin = std::io::stdin();
    let mut s = String::new();
    cin.read_line(&mut s).unwrap();
    let values = s
        .split_whitespace()
        .map(|x| x.parse::<i32>())
        .collect::<Result<Vec<i32>, _>>()
        .unwrap();
    println!("{}", values[0]+values[1]);
}
Программа на Blockly
42018.png

Программа на RE/flex
%option main
%{
#include <string>
#include <iostream>
using namespace std;
int nums[2],n=0;
%}
%%
-?\d+ nums[n++]=stoi(yytext);
.|\n ;
<<EOF>> { cout<<(nums[0]+nums[1])<<endl; yyterminate(); }
%%
Программа на Bison
%token DIGIT
%{
#include <iostream>
#include <stdlib.h>
using namespace std;
int yylex();
void yyerror(char const *s)
{ exit(1);
}
%}
%start program
%%
program: value ' ' value '\n' { cout<<($1+$3)<<endl; }
      ;
value: number { $$=$1;}
      | '-' number { $$=-$2;}
      ;
number: DIGIT { $$=$1;}
      | number DIGIT {$$=$1*10+$2;}
      ;
%%
int yylex()
{ int ch=getchar();
  if(ch>='0' && ch<='9') { yylval=ch-'0'; return DIGIT; }
  return ch;
}
int main()
{ return yyparse();
}

Порядок создания команды для участия в командном чемпионате

1. Зарегистрировать всех участников команды с помощью панели "Авторизация", кнопка "Регистрация".
2. В разделе "Рабочее место участника", вкладка "Управление командой" от имени одного из участников необходимо создать команду, указав её имя и логины остальных участников.
3. Остальные участники должны авторизоваться на сайте и принять предложение по участию в команде, щелкнув мышкой по соответствующей строке таблицы предложений на той же вкладке.

Примечания:
Если все участники уже зарегистрированы, шаг 1 пропускается.
Шаги 2 и 3 не выполняются, если в команде 1 человек.
Посылать решения можно от имени любого из участников команды.
Изменять состав команды можно во время соревнований, но только до отправки первого решения.
loading