Позже вы познакомитесь с правилами соревнований Codeforces, которые будут отличаться от правил ACM-ICPC, TopCoder, GCJ и, я надеюсь, немного разнообразят контесты. Большая часть официально-проводимых соревнований будет проходить именно по этим правилам, хотя будут и более традиционные контесты. Например, Codeforces Beta Round #1 будет проходить по старым-добрым правилам ACM-ICPC (имеются ввиду правила подсчета результатов — так как у нас соревнование личное, покороче, да и разрешенных языков поболее). Пока тестирование будет проводиться под ОС Windows, но в будущем это может и измениться, благо система поддерживает тестирование на разных платформах даже в рамках одного контеста.
В настоящий момент система сконфигурирована на поддержку следующих языков (для каждого указана строка компиляции и/или запуска):
- GNU C++ 4
g++.exe -static -DONLINE_JUDGE -lm -s -x c++ -Wl,--stack=268435456 -O2 -o {filename}.exe {file}
- GNU C++11 4
g++.exe -static -DONLINE_JUDGE -lm -s -x c++ -Wl,--stack=268435456 -O2 -std=c++11 -D__USE_MINGW_ANSI_STDIO=0 -o {filename}.exe {file}
- GNU C 4
gcc.exe -static -DONLINE_JUDGE -fno-asm -lm -s -Wl,--stack=268435456 -O2 -o {filename}.exe {file}
- MS VS C++
cl /W4 /F268435456 /EHsc /O2 /DONLINE_JUDGE {file} - Free Pascal 2
-n -O2 -Xs -Sgic -viwn -dONLINE_JUDGE -Cs67107839 -Mdelphi -XS {file} -o{filename}.exe - Delphi 7
dcc32 -Q -$M1048576,67107839 -DONLINE_JUDGE -cc {file}
- C# Mono 2
dmcs -define:ONLINE_JUDGE -o+ -out:{filename}.exe {file}
- C# .NET
csc.exe /o+ /d:ONLINE_JUDGE /r:System.Numerics.dll /out:{filename}.exe {file}
- Java 6, 7
javac -cp ".;*" {file}
и
java.exe -Xmx512M -Xss64M -DONLINE_JUDGE=true -Duser.language=en -Duser.region=US -Duser.variant=US -jar %s
- Ruby
ruby.exe %s - Python 2, Python 3
python.exe %s - PHP 5
php.exe -n -d ONLINE_JUDGE=true -d display_errors=Off -d error_reporting=0 %s
- Haskell GHC 7
ghc --make -O %s - D
dmd -L/STACK:268435456 -version=ONLINE_JUDGE -O -release -inline -noboundscheck {file} - OCaml
ocamlopt nums.cmxa str.cmxa -pp camlp4o -unsafe -o {filename}.exe-ocaml {file}
- Scala
As Java - JavaScript V8
d8 {file}
Не гарантируется, что задачи будут иметь решения на каждом из представленных языков (особенно это касается скриптовых). Вероятно, позже я введу поправочные коэффициенты по времени работы для некоторых из языков. Версии со знаком плюс обозначают, что тестирующая система может использовать и более старшие версии. Если есть конструктивные предложения по изменению строк компиляции или запуска – пишите в комментарии.
Так же хочется отметить, что кроме стандартных вердиктов вам может еще прийти «Отказ тестирования», что обычно означает, что ваше решение неудалось запустить или оно совсем как-то неожиданно упало. Например, если в Delphi объявить сверхбольшой массив, то компилятор благополучно скомпилирует код, но в результате получится некорректный win32 exe-файл. Попытки с вердиктами «Ошибка компиляции», «Отказ тестирования», «Сбой тестирования» (и подобное) игнорируются при подведении результатов.Кроме того обратите внимание, что задачи будут доступны как на русском так и английском языках.
Вроде все, до встречи на Codeforces Beta Round #1.
UPD: Добавлен чистый C (компилятор gcc).
UPD 2: Добавлены Haskell GHC 6.12 и F# 2.0
UPD 3: Обновлены версии многих компиляторов. В настоящий момент используются следующие версии:
- Mono C# compiler version 3.2.3
- DMD32 D Compiler v2.064.2
- Delphi 7 [Borland Delphi Version 15.0]
- Free Pascal Compiler version 2.6.2
- MinGW g++.exe (GCC) 4.9.2
- Haskell Glorious Glasgow, version 7.6.1
- Java 6 javac 1.6.0_45
- Java 7 javac 1.7.0_72
- Java 8 javac 1.8.0_25
- Ocaml ocamlopt 4.00.1
- Perl v5.12.2
- PHP 5.3.8
- Python 2.7.8
- Python 3.4.1
- Ruby 2.0.0p353
- Scala compiler version 2.11.1
- MS VS C++ 2010
- JavaScript V8 3.23.0
Что-то здесь не так:
gcc.exe -fno-asm -lm -s -x c++
<sarcasm> Ты бы еще сказал, что там не было basic_string< pair<double, int> >
</sarcasm>
Вообще-то да. Помню задачу про треугольники с саратовского ЧФ, где были строки в 300 символов и нужна была сортировка. После этого я принял окончательное решение олимпиады на паскале не писать
variadic macros & VLA де-факто зависят не от языка (Си или Си++), а от компилятора (у GNU есть, у MS нету).
а вот Си++ к сожалению нельзя написать y = (k ? sin : cos) (x); -- компилятор не сможет решить какие функции вызвать
y = ( k ? ( double (*)( double )) sin : ( double (*)( double )) cos )( x ); // А вто так - можно
так можно в С++
И каким же С++ транслятором можно так писать?
Comeau говорит о этом коде следующее:
Comeau C/C++ 4.3.10.1 (Oct 6 2008 11:28:09) for ONLINE_EVALUATION_BETA2
Copyright 1988-2008 Comeau Computing. All rights reserved.
MODE:strict errors C++ C++0x_extensions
"ComeauTest.c", line 10: error: cannot determine which instance of overloaded
function "sin" is intended
cout << (k? &sin : &cos) (x);
^
"ComeauTest.c", line 10: error: cannot determine which instance of overloaded
function "cos" is intended
cout << (k? &sin : &cos) (x);
^
2 errors detected in the compilation of "ComeauTest.c".
Эти строки эквивалентны (имя функции является указателем на неё):
y = (k ? sin : cos)(x);
y = (k ? &sin : &cos)(x);
Да, такие конструкции возможны в C++. Но при перегрузке функций, компилятор без дополнительной информации не может определить, какую из них использовать:
float sin(float x);
double sin(double x);
long double sin(long double x);
Если же перегрузка функций не используется, то эта конструкция не вызовет ошибки.
Если мспользуется шаблонная функция, то возможна более короткая запись:
c = (k ? min<int> : max<int>)(a, b);
вместо варианта с приведением типа.
PS: когда я писал, что нельзя, я имел в виду VS 2005.
y = ( k ? std::sin : std::cos ) ( x );
уже не компилируется.
Чтобы не писать так громоздко, можно сделать так:
typedef double (*df)(double);
y = (k ? (df)sin : (df)cos)(x);
Еще один вариант:
y = (k ? sinl : cosl) (x);
Гм. А что, такая ситуация *так часто* встречается, что есть необходимость в сокращенной конструкции?
Она не сокращенная. Просто С++ компилятору не хватает ума, чтобы скомпилировать без подсказки.
Вот еще вспомнил. В GNU C можно делать вложенные функции (почти как в Паскале, только удобнее), для С++ это не поддерживается.
Между прочим, можно считать, что каждая функция -- метод класса, поля которого -- аргументы функции.
А порой иногда не хватает компилятора С++ :D
Это реально?
сплит строки по пробелам
Люблю Python 3)
И компилирует ли он что-то типа
var a = new int[];
var q = from v in a select v;
?
Не везде (у FP точно нет). Зачем они нужны вообще?
#include "my/arithm.hpp"
Во-первых, тестирование производится на разных машинах, поэтому возникнут сложности с масштабированием и поддержанием доступности этих ваших модулей на всех компьютерах.
Во-вторых, такую возможность если и добавлять, то для всех языков. По-моему, слишком большой геморрой. Надо будет для каждого языка специфицировать, где что лежит, как что подключить и т.п. Зачем делать систему слишком запутанной в угоду сомнительным удобствам?
В третьих, ну неужели у вас так много ценного вашего кода, который вы хотели бы использовать на соревнованиях и по каким-то убеждениям не можете скопировать в код основной программы?
java.exe -Xmx256M -Xss<размер стека> -jar %s
Например:
java.exe -Xmx256M -Xss64M -jar %s
Здесь, правда, возникает проблема - при такой командной строке программа, вообще говоря, может использовать больше чем 256 МБ памяти (но только в стеке). Но выставлят стек надо в любом случае, по дефолту он очень мал.
Известный трюк сильно platform-dependent
Я понимаю, что прошло уже почти 10 лет и стек на джаве за это время выставили, но на плюсах тоже работает этот же трюк.
51060049 (падает из-за переполнения стека) vs 51060029 (выводит какие-то числа)
Так как я пишу все олимпиады в основном именно на нём :) (SNWS, Neerc ...)
А вот тут за это спасибо! :) А то бы как бы я писал codeforces #Beta 1,без любимого паскальчика :)
Правда иногда приходится юзать и STL :(((
Встроенной нет.
Но лично в Free Pascal'е в папке demo/text есть его реализация.
Под какой ОС проводятся запуск решений?
Версия GCC -- mingw или нет (mingw содержит ряд багов, которых нет в линуксовой версии glibc)?
Имхо, про полчаса вы загнули. Для рандомизированного бинарного дерева что нужно? Структура с узлом, две процедуры поворота, и процедура вставки. Итого строк 40-50. А полноценное АВЛ-дерево получается добавлением процедуры балансировки, строк десять.
Вот если нужно еще и удаление... тогда да, придется попотеть
And why C++ and C are compiled in the exact same way?
Got this error when 2-minutes were left in the contest #339::Div2::C I thought "M_PI" was standard in "G++11" /--------------------------------------------------------------------/ Can't compile file: program.cpp: In function 'int main()':
program.cpp:191:10: error: 'M_PI' was not declared in this scope
ans=ans*M_PI; ^ /--------------------------------------------------------------------/ Submission Link http://codeforces.com/contest/614/submission/15372460
{IfDefONLINEJUDGE}
WriteLn('Debugoutput');
{EndIf}
{IfDef ONLINE_JUDGE}
WriteLn('Debug output');
{EndIf}
to increase stack space size, you just have to pass "RTS" switches to executable file, leaving compiling command line unchanged.
compile: ghc --make -O program.hs
running: program.exe +RTS -K256m -A8m -RTS
here -Ksize sets the maximum stack space size, the default value is 8mb, it's not reserved memory space, and won't affect overall performance.
and -Asize sets the cache size of GC, it's a reserved space to speed up GC, the default value is 128k, and quite small for data structure problems here (via profiling I found my program spends more than 80% of running time on GC when solving a standard data structure problem here).
on *nix, it's simple, and you can leave the judge system setting untouched.
export GHCRTS="-K256m -A8m"
I guess it's also quite easy on Windows.
same issue as bjin. the stack size of Haskell is too small to solve many large-scale-data problems.
could u pls make it larger?
Has this ever been addressed? Is Haskell still run with a very low stack size?
I don't know to whom should I request the same.
http://codeforces.com/blog/entry/405
It runs on the JVM so you could download the clojure.jar and clojure-contrib.jar jars (Clojure 1.1 is the current version) and run programs with
java.exe -classpath "clojure-contrib.jar;clojure.jar" clojure.main %1
I will help test it if you like.
It would be a lot more fun for me and other Clojure programmers. There were twice as many of us who qualified for GCJ this year as there were F# programmers.
Though we should note that after adding python and other interpreted languages we may expect complains that interpreters are not fast enough, while time limits are the same for them and for C-programmers.
Is it possible to change the C# compiler to using dmcs.exe so that we can write C# 4.0 code?
According to this page: http://mono-project.com/CSharp_Compiler, the gmcs compiler only targets the 2.0 runtime.
Лично я против Perl, т.к. человеку, который не знает Perl будет сложно взламывать перловые решения.Тогда может дружно уберем F#, Ruby, Haskell, Python... ? не все же знают их...
ерунда короче.
Если же использовать автоматические обфускаторы, то можно и на других языках получить не меньший ужас.
http://ld.hackerdom.ru/b/?p=49 - нормально компилирующийся код на C++.
p.s. у меня почему-то едет форматирование на этом комментарии, либо пропадает текст.
Другое дело, что написать нечитаемый код можно на любом языке, но на Perl сделать это проще.
Однако [не хочу устроить холивар, мнение лично мое]:
1. Perl более производительный, чем другие скриптовые языки;
2. регэкспы и хэши в Perl гораздо удобнее для использования.
p.s. Действительно сложнее взламывать - это haskell или J... Код на языке J (не мой), складывающий все натуральные меньшие 1000, делящиеся на 3 или 5.
[code]+/~.(3*i.334),5*i.200
Perl появился в языках программирования. Спасибо!! )
-Wall --pedantic
And my gcc (gcc version 4.4.5 (Debian 4.4.5-8)) not give any errors. But when I posted my program here (on GNU C) it says "Runtime error on test 1".
Program works correctly and take right answers. You can see code here: http://pastebin.com/jhec4ixB
Thanks for your attention.
And C# mono is much slower that csc.It is even slower than java(by a 2x factor)
UPD. Статистика вдруг начала резко меняться. Для тех кто пропустил: у первого сообщения было +4, у второго +8.
Оставить обе версии (2.х и 3.х) было бы самым правильным решением
Если F# убрали в связи с глюками компилятора при работе на Mono, то можно вместо него добавить OCaml [1], который мало чем от F# отличается и является довольно популярным языком для решения задач в системе Sphere Online Judge [2] (как видно в [3]).
Ссылки
[1] http://caml.inria.fr/ocaml/index.en.html
[2] http://www.spoj.pl/
[3] http://www.spoj.pl/ranks/languages/
> вместо всем привычной майкрософтовской...
Не стоит говорить за всех... ;)
Да, вы очень сильно заблуждаетесь. Wine - это пародия на эмулятор, который даже под 64 бита не компилируется и навряд ли будет.
Mono же - это реализация от небезызвестной фирмы Novell компилятора языка C# (что есть стандарт ISO) и среды исполнения для него. Понимаете разницу между просто другой реализацией компилятора стандартного языка и попыткой реализации нестандартного API закрытой ОС?
"И много ли таких, кто на юниксах пишет под дот-нет?" - на одном GtkSharp-е уже столько прог написано. С такой тенденцией как сейчас, скоро половина почти самой популярной среды GNOME будет на mono (между прочим разработками и mono, и GNOME курирует один и тот же чувак).
many other programming sites provides both versions...
Решение скомпилировалось после того, как убрать
и заменить
на
.
Чтобы создать консольное приложение в MS Visual Studio нужно:
1) Файл => Создать => Проект...
2) Visual C++ => Win32 => Консольное приложение Win32
3) Параметры приложения => [v] Пустой проект
4) Добавить в «Файлы исходного кода» новый .cpp файл и писать туда.
Почему бы не добавить MS C#?
c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\csc.exe /target:exe /out:solution.exe ИмяФайла.cs
Unable to parse markup [type=CF_HTML]
WTF??
Ну так скорость написания кода на Python, Ruby и подобных выше чем на С++, то есть люди, которые используют их, получают определенное преимущество. А так все справедливо: используй на здоровье, но знай о TL
"Используй, но знай о TL" это просто другой способ сказать "не используй"))) Потому когда волнует TL (а это практически всегда) приходится писать на С и ко.
ocamlopt
is used (which I suppose it should be.) Anyway, thanks for adding OCaml.Давайте дождемся понимания того, что это нужно не только вам одному. Я не вижу плюсов к комментарию и ответов в поддержку.
А python3 нужен много кому...
Призываю весь сознательный народ, кодящий на питоне, поставить плюс комментарию выше.
Плюсую. Python3 необходим.
Я считаю, что хоть какой-нибудь лисп должен быть в списке. Лисперам проще перелезть с clojure на racket, чем даже на java. Да и такой вопрос спрашивается не первый раз http://codeforces.com/blog/entry/4722
Common Lisp не нужен. Это старый стандарт, в котором много вещей лежат за плоскостью стандарта, в реализациях (либо каких-нибудь либах). Имена спешиалов имеют историчность(см. car, cdr). Впрочем, кто-нибудь может быть со мной не согласен.
Scheme более интересный. Он более функциональный, чем CL, имеет больше фичей. Чего стоит только именованый let. Стандарт развивается http://scheme-reports.org/ Выше предлагали clojure. Удобный язык. Имеет удобные структуры, например. Лежит на JVM, развивается.
Открытый вопрос: компилировать их, или запускать сразу?
Если компилировать, не окажется ли, что читерно макросами в компайл-тайме можно что-то посчитать? (defmacro gen () `(quote ,(precalc arg1 arg2)))
Если интерпретировать, всякие clojure могут работать медленно.
Проще всего будет ввести какую-нибудь интерпретируемую scheme. Ракет, или что-то другое — огромной разницы нет, все-равно у каждого будет огромный сет стандартных макросов на все случаи жизни.
Тем временем, языковая статистика: http://langpop.corger.nl/
This problem has a solution on Python consumed 60 ms and 3100 KB. I think it is possibly to solve it on Ruby. Anyway we do not guarantee that any problem has a solution on languages like Perl/PHP/Python/Ruby.
Пока нет
А почему?
Perl'а нет в списке
Существует ли пример, на котором -foptimize-sibling-calls для gnu c/c++ заметно ухудшает результаты?
Мне не известен, но то, что его отсутствие приводит к фейлам известно.
Why is
-fno-optimize-sibling-calls
which disables tail call optimization passed to GCC? I've always assumed during the contests that GCC does TCO, so I'm a bit confused.Because we found that sometimes this optimization makes code to be invalid.
You use version 4.6.1 — this bug already fixed in this version.
Доброго времени суток) Для всех языков программирования могут использоваться ТОЛЬКО стандартная либа и ничего более(ну кроме того, что написал сам)?
Ну более-менее да. А вообще — запуск в помощь:)
там можно проверить, что компилится, а что — нет.
Жаль, что нет Visual C# 2010.
Вопрос к тем, кто пишет на Python. Почему
if __debug__:
работает когда я запускаю программу у себя на машине черезpython -O
, но не работает на сервере? То есть на сервере не смотря на заявленный ключ-O
ветка дебага выполняется. Я что-то делаю неправильно или так и должно быть? И существуют ли какие-нибудь еще трюки для того, чтобы добавить в текст программы код, который бы выполнялся локально, но не выполнялся при обработке тестирующей системой?i think "special languages" should not be disabled for those "normal problems"... also, some of normal problems are not so hard for esoteric languages to solve...
Проблема с размером стека для программ на C#: дефолтного 1МБ не хватает для многих задач (например DFS для 10^5 уже падает по
StackOverflowException
). Простой способне работает, так как For partially trusted code, maxStackSize is ignored if it is greater than the default stack size Поэтому хорошо бы
поставить .NETдописать какую-то пост-билд команду, которая поправит хедер бинарника перед запуском, например с Visual Studio идет утилита EditBin, и эта проблема решается так:EDITBIN.EXE /STACK:64000000 file.exe
Is there any plans to allow some versions of Lisp in contests? Common Lisp / Racket
Please, not until I do a Surprise Language Round for it :-)
Если настоящий .net разрешить никак невозможно, то может быть хотя бы моно можно поставить какое-нибудь посвежее? Например на интервьюстрите такой вот код:
генерит такой вот аутпут:
Тут, на кодфорсе, по прежнему:
Кажется, я догадываюсь в чём баг: в строчках компиляции жеж у вас gmcs, его давно уже пора было заменить dmcs! Замените плиз?
Почему GCC и G++ используются со свитчами O2, а FPC -- без? Эксперимент показывает, что разница есть, причём весьма существенная.
I think Java should have larger stack size. Default stack size is too strict for some problems. Stack size can be changed with -Xss option.
I agree, it should not be hard. For now it's possible to create a new Thread and specify the stack size in Thread's constructor.
I submitted a code in Java,But I get the following error
Source should satisfy regex [^{}]*public\s+class\s+(\w+).*
What does this mean???
It should contain
public class SomeName
before any '{' or '}'or something like this. Can yo give link to the submission ?
Когда появится поддержка python3? ответьте , пожалуйста.
Мне кажется, или среди доступных компиляторов появился компилятор языка D?
Could you add the mtl package for Haskell to use the very useful Monad Transformer and State Monad
Thanks
Will Python 3.x will be supported? You could add it as a separate language, it's not neccessary to replace python 2.x. I think it's not hard to add it at all...
I don't see an F# option when submitting solutions. Help?
There are several discussions about it in this thread in Russian "view" (which you can read, though poorly, via google translate, I think). It looks like F# compiler have technical or some other problems and it was disabled for an unknown period of time...
Не знал куда писать, решил сюда. Почему при просмотре задач через "Архив" в некоторых из них нет блока "Отправить". Вот скрин.
Слева сверху есть кнопка "Отослать", нажав на которую можно или отправить сам исходник, или текст программы
Could you please upgrade GHC to the latest release (7.6.1)?
There are significant improvements comparing to the current one used in codeforces. It contains newer libraries which providing more powerful apis, provides new features and generates faster programs. These will make people using Haskell be able to challenge more complicated problems.
I also agree on replacing the outdated GHC6 with GHC7.
Instead of upgrading to GHC 7.6 directly, I suggest Codeforces to install Haskell-Platform 2012.4.0.0, which is more stable and well supported in many aspects. It contains GHC 7.4 and some new packages like
vector
, which makes Haskell competitive to imperative languages like C++ and Java in some problems.The LLVM backend is now stable in GHC7.4, and with
-fllvm
flags it will be enabled.I use
ByteString
state monad to parse input in haskell codes, Unfortunately,mtl
package is not shipped with GHC (but included in haskell platform), so I have to paste a very long (like 50 lines?) piece of code implementing a very simple state monad each time.Появилась проблема со скачиванием условий из тренировок. Не нашел, куда еще можно сообщить о баге. Жму "скачать", но меня выбрасывает на страницу с сообщением того, что на codeforces что-то сломалось.
Роскомнадзор забанил, наверно.
Заметил, что в списке языков при отправке решения стало "Microsoft Visual C++ 2008" вместо "2005". Поменялись ли ключи компилятора? Значит ли это, что MSVS 2005 больше не будет использоваться на сервере? Можно ли в ближайшее время ожидать MSVS 2010?
а еще лучше MSVS 2012
Не знаю, чем хороша или плоха MSVS 2012 по сравнению с предыдущими. Но могу сказать, что среди 2005/2008/2010 самая неудачная была 2008. Когда-то у меня одновременно стояли три упомянутые студии и была возможность сравнить скомпилированные exe-шники одного исходника по производительности. В коде активно использовались STL-контейнеры. Бинарник от 2008 работал в 1.5-2 раза медленнее, чем от 2005 и 2010.
May i know if this
g++.exe -static -fno-optimize-sibling-calls -fno-strict-aliasing -DONLINE_JUDGE -lm -s -x c++ -Wl,--stack=268435456 -O2 -o %name%.exe %1
is still valid, ie. applies toGNU C++ 4.7
(currently used in programming contests held here on this site)?Yes
Пара вопросов по параметрам GCC:
-fno-optimize-sibling-calls
? Баг вроде как уже исправили в 4.7: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51323-fno-strict-aliasing
введён просто из-за того, что слишком много людей его неосознанно нарушают, или же по какой-то конкретной причине?Дело в том, что эта конфигурация вроде как для неопределенной версии cpp.g++. Т.е. это generic конфигурация. Например, эти строки могут попасть в скрипты компиляции каких-нибудь пакетов задач, а у пользователя будет 4.6. Или Полигон разворачивается в том числе в ЛКШ, и какая там версия MinGW я не знаю.
Оба флага были введены для борьбы с багами GCC, о которых писал e-maxx.
Add Go and Rust please, thank you
How the system compiles C++ 0x program? with -std=c++11?
-std=c++0x
thanks
Maybe it should be changed to
-std=gnu++0x
for consistency? After all, GNU extensions are enabled when compiling in default mode (the command line for "GNU C++ 4" will implicitly use-std=gnu++98
).Please make it
-std=c++11
It seems the compiler haven't enable -std=c++0x, for example here is my code for http://www.codeforces.com/contest/218/problem/A, in which I used 'auto' to declare a variable:
Choose
c++0x
version of compiler. Your solution accepted: 3404996In the past two contests, I met a problem with Perl. Such as these submissions.
http://codeforces.com/contest/266/submission/2991670 http://codeforces.com/contest/268/submission/3021653 http://codeforces.com/contest/268/submission/3022677 http://codeforces.com/contest/268/submission/3025426
The programs passes some test cases, but got a "Idleness limit exceeded" on some other cases. Could anyone help me with this problem?
У вас указана версия Scala 2.9.2 в апдейте от 5 января, а на сайте за день до этого вышла версия 2.10. Не могли бы вы обновить, пожалуйста? Заранее спасибо.
Поддерживаю. В Scala 2.10 появилась такая удобная штука как String Interpolation.
Is it possible to know why we can't use
import collections
in our Python code?I have never had a problem with this.
Какая полная строка компиляции для C++11 (c++0x здесь)?
Наверное, стоит добавить эту информацию в пост.
Well, probably many people write things like that and it may be annoying but... I think that scheme/lisp is a really nice language and that it would be nice to have the possibility to submit code in it. It is quite unique compared to other languages.
As I am taking an assembly language course, I found it hard to find problems to practice. I think it will be great if CF add a assembly compiler to the system so we can use some simple problem to improve our assembly programming skills.
I suggest you to try https://projecteuler.net/ instead.
Sorry for repeating, but I think it's a right time to finally add Python 3. It would be really nice from your side.
Mike, could you please add GCC C99 build target? It's so sweet to have variables in the middle of the scope and in for loop. Just gcc -std=c99. Or even update GNU C to support C99 — this shouldn't break existing C89 programs, while some people may take advantage of C99. Note you have C++11 as separate target.
Maybe -std=gnu99 would be better as it also provides the GNU extensions
Скажите, а нельзя ли в качестве интерпретатора питона использовать не классический CPython, а его jit-разновидность pypy? Совместимость у него полная с 2.7.3 (на уровне необходимом для codeforces), а по скорости гораздо быстрее.
Это бы увеличило конкурентноспособность питона по отношению к компилируемым языкам. И не надо будет никаких "коеффициентов". В общем, дайте нам счастье :-)
ну что ж, раз pypy настолько быстрее, то давайте потестируем его на какой-нибудь задаче.
задача: http://codeforces.ru/contest/265/problem/C
решение: http://codeforces.ru/contest/265/submission/3467611
CPU:
Intel Core i5-2410M
ОС:
Ubuntu 12.04.2 x64
с ядром3.5.0-28-generic
python:
2.7.3 (default, Aug 1 2012, 05:14:39) [GCC 4.6.3]
pypy:
2.0.0-beta2 with GCC 4.6.3
(из репозиторияppa:pypy/pypy-weekly
)в файле input.txt — случайная строка из 1000000 букв l и r, как указано в условии.
Результаты:
мораль: pypy не нужен
Да-да. Я когда несколько лет назад настраивал Python пробовал разные реализации. Однозначно сказать, что какая-то оказывалась быстрее на задачах было нельзя.
Тоже решил потестировать.
Задача: 282B - Раскрашивание яиц
Решение: 3303340
Генератор теста:
Intel(R) Core(TM)2 Duo CPU
Ubuntu 10.04 2.6.32-46-generic x86_64 GNU/Linux
CPython: Python 2.6.5
PyPy 1.9.0 with GCC 4.4.3 (https://bitbucket.org/pypy/pypy/downloads/pypy-1.9-linux64.tar.bz2)
PyPy: ждал 10 минут, так и не досчиталось.
ОК, уберем из решения инкрементальную конкатенацию строк — 3661508:
Т.е. если писать код "правильно", то PyPy получился несколько быстрее. Если же писать "неправильно" (но вполне удобоваримо для CPython), то PyPy может задуматься на вечность.
Хорошо, давайте проведём тестирование
Тест №1. Линейное решето Эратосфена.
""" Исходники — http://pastebin.com/6uY7nZHT """
python eratosthenes.py
4.88s user 0.02s system 99% cpu 4.909 total
pypy eratosthenes.py
0.53s user 0.04s system 100% cpu 0.567 total
Кстати, этот алгоритм с такими параметрами (N=10**7) был нужен в задаче 300E — http://codeforces.ru/blog/entry/7497 (авторское решение).
Тест №2. Сорировка списка с помощью list.sort().
""" Исходники — http://pastebin.com/Sjm7yps9 Делал два замера, с сортировкой и без, потом смотрим разницу """
С сортировкой:
python sort.py 11.18s user 0.09s system 99% cpu 11.273 total
pypy sort.py 2.95s user 0.05s system 99% cpu 3.013 total
Без:
python sort.py 4.62s user 0.08s system 99% cpu 4.701 total
pypy sort.py 0.95s user 0.02s system 100% cpu 0.971 total
А сорировка — один из наиболее часто использемых алгоритмов.
Тест №3. Длинная арифметика
""" Исходники — http://pastebin.com/Npv0zePC Импровизированный тест на суммы и умножения длинных чисел """
python long_arithmetics.py 12.56s user 0.00s system 99% cpu 12.565 total
pypy long_arithmetics.py 8.86s user 0.02s system 99% cpu 8.879 total
Тест №4. Списки — добавление элементов
""" Исходники — http://pastebin.com/FMAEpqaa """
python lists.py 7.22s user 1.05s system 99% cpu 8.269 total
pypy lists.py 2.07s user 1.79s system 99% cpu 3.860 total
Тест №5. Словари — добавление и поиск
""" Исходники — http://pastebin.com/6NM01LSM """
python dicts.py 5.51s user 1.00s system 99% cpu 6.515 total
pypy dicts.py 3.10s user 0.80s system 99% cpu 3.919 total
CNT0, взял специально ваш пример. Сгенерил файл из 10 ** 6 случайных букв l или r. У меня оба питона сработали одинаково, в рамках погрешности:
>>> time python -O bad.py < input.txt > output.txt
python -O bad.py < bad > result 1.08s user 0.04s system 97% cpu 1.153 total
>>> time pypy -O bad.py < bad > result
pypy -O bad.py < bad > result 1.09s user 0.06s system 97% cpu 1.187 total
Но вы в коде используете "устаревшую" возможность сортировки с помощью cmp (в питоне 3.0 была вырезана). jit её не мог подхватить, поэтому и тесты не показали выигрыша (в случаях, когда jit не зайдествован, pypy действительно может быть медленнее классической реализации). Поэтому давайте посмотрим на решение этой же задачи, написанное обычными питоновскими циклами: http://codeforces.ru/contest/265/submission/3228965
>>> time python -O bad2.py < bad > result
python -O bad2.py < bad > result 0.45s user 0.06s system 93% cpu 0.549 total
>>> time pypy -O bad2.py < bad > result
pypy -O bad2.py < bad > result 0.23s user 0.07s system 94% cpu 0.322 total
И что видим? Питон проиграл в два раза. Прошу обратить внимание, что ваше решение через cmp работало в 2-4 раза медленнее.
Оба интерпретатора — это инструменты, которые надо правильно использовать для получения максимального результата. Поэтому, призываю делать выводы объективно, без эмоций, с адекватными тестами.
круто.
Будет ли поддержка VB.NET?
В ближайших планах поддержки VB.NET нет.
I would like to +1 to numerous requests in this thread about missing Haskell libraries. Here is a list of the most important ones, in my opinion:
vector
— provides Vector data type. Reference: 'Use this package whenever you'd use an array in another language'unordered-containers
— provides HashMap and HashSet data types.mtl
— provides Control.Monad.State, Control.Monad.Reader and others. Crucial for writing stateful code, without them it feels like part of the language is missing.These are really the most basic packages and IMHO shouldn't be missing. (How would you feel about exclusion of std::vector from C++?) It would be great if at least these packages were installed but it's really simpler to just install Haskell Platform.
Could you provide me an example source which uses all of the requested features?
Sure, here you go: http://codebin.org/view/869e25b2
Output on my machine (GHC 7.4.1):
+1 for unordered-containers at least. no hashmaps === very sad. =( here is code sample: http://codeforces.ru/contest/366/submission/5241289
MikeMirzayanov At least unordered-containers could be added. We really need HashMap. See 83564736 for an example.
About Ruby. Ruby has no built-in support for multi-dimensional arrays, and the workaround like
Array.new(n) { Array.new(m) { 0 } }
is really a pain in the ass.I think arrays are really important to algorithm problems. So just like other guys suggested to add the 'vector' hackage to Haskell(which I'll totally vote for it), maybe a more handy version of multi-dimensional array for Ruby should be added, like 'narray'.
Here's the webpage for narray. http://narray.rubyforge.org/SPEC.en
It's pretty neat.
Hello,
This might not be the appropriate place for my question but I don't know where else I can post.
I have submitted 2 problems and at some point, a test fails for each. The same happens when I run a custom test with the code and input. The issue is that when I run them locally, with the same set of data, the answer is the expected one. I chose GNU C 4 and locally I have GCC 4.7.3. I tried with the compile options from this page but I still have the same problem. Any ideas on this?
Thanks.
see this http://ideone.com/GDLpO7.
Try to printf values after scanf (in server code runner)
Problem is in the line with scanf
Hello,
Thank you for your reply. Indeed, it seems to be a problem with scanf. Any clue on how to solve this?
Thanks.
An
unsigned long
is only guaranteed to be able to hold values up to 232 - 1 ≈ 4·109. Check carefully, could the result that your solutions are printing be greater than this?Will R-cran be supported? Topcoder have already done that.
I have compete in GCJ with R in 2012 and 2013, it was never a bottleneck. Here are some examples: https://github.com/hetong007/r4codejam
Maybe instead of Python you can use pypy (http://pypy.org/). Its a python JIT enabled runtime and much faster than default CPython interpreter and fully compatible with standard libs. I just had a time limit exceed due to a loop of 10^6 taking 5 seconds in CPython but only 0.1 sec in PyPy due to JIT. Please, consider replacing Python with PyPy
I have just +1'ed all the posts that push PyPy. Let's add (or replace) CPython with PyPy. Example from 214: my solution to problem 3 got TLE on test 20. So I run the test with PyPy:
(I was able to pass TLE by patching my solution, but anyway...)
I support that. I used PyPy for Codejam and it often gave 2-3 times speed up compared to official Python compiler.
Yeah, PyPy should be the standard for programming contests instead of CPython. I hope they support it in the near future!
support!!!
python always got TLE
use PyPy or extend time limit for python language
Я конечно понимаю что задам вопрос интересный двум с половиной анонимусам, и все же, планируется ли возвращение F#? Он такой няша =33333
Было бы неплохо выключить проверку выхода за границы массива в языке D(-noboundscheck), или просто вместо -O сделать -release, она в себе содержит и оптимизации и отключение границ.
А еще можно добавить компилятор gdc или ldc, они обычно заметно быстрее, чем dmd.
Да, видимо, лучше будет не как сейчас:
А с компиляцией релизной версии:
Это всё равно уступает современному g++ -O2 из-за того, что оптимизатор в dmd не очень хорош, но хотя бы не в три раза на бенчмарке :) .
Что случается от этих опций (источник 1, источник 2):
-L/STACK:268435456
: под виндой можно использовать до 256 мебибайт стека.-version=ONLINE_JUDGE
: компилируется код, заключённый вversion (ONLINE_JUDGE) {...}
.-O
: включаются оптимизации.-release
: Всеassert
-ы и контрактыin
/out
в функциях выкидываются из кода; для проверок, тем не менее, остаютсяenforce
. Проверка границ массивов остаётся только вsafe
-функциях.-inline
: Компилятор пытается инлайнить функции.-noboundscheck
: Проверка границ массивов выключается для всех функций, в том числеsafe
.Сделал
Ура, спасибо!
Сделал -O -release -inline -noboundscheck
Здраствуйте.. Скажите пожалуйста, если писать программу с файлами, то как их нужно назывть??..
Если в задаче указаны файлы, из которых надо читать и выводить, то надо использовать их. Если ничего не указано, то надо читать из stdin и писать в stderr (то есть без файлов)
hi why your c# compiler represent '.' like ',' so I'll get "Wrong answer" result on test. thx in advance
If you mean printing numbers then it is probably because computers which test the solutions have russian locale by default. You need to print numbers in culture-independent manner (CultureInfo.InvariantCulture).
I also want to complaint on this. Last contest I got 2 RE2 on my solution before I got what is the problem. Here is submits — 6072446 6072446 so... it's not to honest for participant to guess why you have runtime on server and correct answer on local PC.
c++ is my favorite language.
Меня интересует как происходит стандартный поток ввода-вывода в JavaScript. Как это нужно реализовать?
readLine()
— читает строку из stdinwrite()
— пишет в stdoutprint()
— пишет в stdout, вставляет символ перевода строки, и очищает буфер. То есть, этой функцией лучше не пользоваться.Hello. Could you please describe what problems do you have with F#? What OS do you use with F#? I think that we can help deal with the problems and return it to the list of languages. Thanks.
Any chance to get a 64-bit version of PHP? Or do I need to start using a real programming language? :)
is php an imaginary language? ;)
I never saw it mentioned anywhere in the blogs, so FWIW: I've noticed that Scala compiler has recently been upgraded to the latest and greatest (2.11.1). Whoever did this, thanks a lot.
I think codeforces has a great collection of supported languages, but most of them are from the ALGOL family. It would be really awesome if we could also have support for a Lisp. Could we possibly have support for Clojure or Common Lisp?
Удивительно что у этого поста нейтральная оценка. Хотя он несёт полезную информацию!
тут почему-то не считается рейтинг поста..
HI, what do you think about adding Dart language? It looks like a very cool language, and it has been recently approved and standardized by ECMA.
What about change python run env from cpython to pypy? Because the algorithm problems are always CPU intensive, pypy is 2-3 times faster than cpython in general.
Another solution is to extend the time limit for python, such as 5 times as cpp. For example, the time limit for java is 3 times as cpp at http://poj.org/
Because codeforces is all about algorithm problem solving, it's unfair for python programmer in the competitions.
It is unfair to give one language a bigger time limit than to others. Python users already get the advantage of clean high-level syntax, data structures and language support, so they have to pay with a slower run time for this. Other, faster languages should not be handicapped just because they are better than Python in this regard.
Хотелось бы более новой версии Perl (v5.20 — 2014-05-27). Сейчас тут — Perl v5.12.2 . За три года появилось нового.
Спасибо за новую версию! (5.20.1)
Thank you for ruby, go and ocaml. Closure would be great.
Any particular reason why C# .NET references System.Numerics assembly, but Mono doesn't?
В C# есть проблемы с локалью: вещественные числа выводятся через запятую вместо точки -> не проходят тесты.
Пример посылки с последнего контеста
Можно ли что-то сделать с настройками компилятора в будущем или есть какие-то стандартные средства для борьбы с этим?
UPD локаль можно оказывается менять так.
А из командной строки можно?
В теории можно написать "set LANG=en && ./run... ", на практике в Windows это кажется не работает или не всегда работает (м.б. en_US).
Но если менять "Региональные настройки" в панели управления для всей системы, то это точно должно исправить для C#.
У меня нет Windows + MS Visual Studio под рукой, чтобы проверить.
Привет! Есть подстава с PHP: по правилам, на таск отводится лимит по памяти 256 MB, а у интерпретатора стоит не зависящий от условий задачи дефолтный memory_limit=128M
Пофиксите, пожалуйста: -d memory_limit=1G
Это можно прям интерпретатору передать, типа
php.exe -d memory_limit=1G program.php
?