Собственно, сабж c контеста:
http://pastebin.com/jvkUcZx3
Казалось бы, процедура, вызываемая от параметров, равных побайтно, должна возвращать один и тот же результат. Ан нет - они различаются.
В MSVC++ всё ок.
Предложили еще один вариант. Он гораздо проще и даже, казалось бы, понятно, почему случается. По стандарту - результат неопределён.
COLLECT_GCC=C:\Soft\MinGW\bin\gcc.EXE
COLLECT_LTO_WRAPPER=c:/soft/mingw/bin/../libexec/gcc/mingw32/4.5.0/lto-wrapper.exe
Target: mingw32
Configured with: ../gcc-4.5.0/configure --enable-languages=c,c++,ada,fortran,objc,obj-c++ --disable-sjlj-exceptions --with-dwarf2 --enable-shared --enable-libgomp --disable-win32-registry --enable-libstdcxx-debug --enable-version-specific-runtime-libs --disable-werror --build=mingw32 --prefix=/mingw
Thread model: win32
gcc version 4.5.0 (GCC)
Intel Core i3 M350 (x86)
UPD. На сервере CF тоже выдает некорректный результат. Попробуйте во вкладке "запуск".
UPD2. В одном из комментариев выдвинули дополнительное требование: включите оптимизатор (-O1/-O2)
UPD3. Две абсолютно одинаковые посылки под разными компиляторами получают разные вердикты: GCC - WA14 (240112), MSVC++ - OK (240115). Задача B из CF49
http://pastebin.com/jvkUcZx3
Казалось бы, процедура, вызываемая от параметров, равных побайтно, должна возвращать один и тот же результат. Ан нет - они различаются.
В MSVC++ всё ок.
COLLECT_GCC=C:\Soft\MinGW\bin\gcc.EXE
COLLECT_LTO_WRAPPER=c:/soft/mingw/bin/../libexec/gcc/mingw32/4.5.0/lto-wrapper.exe
Target: mingw32
Configured with: ../gcc-4.5.0/configure --enable-languages=c,c++,ada,fortran,objc,obj-c++ --disable-sjlj-exceptions --with-dwarf2 --enable-shared --enable-libgomp --disable-win32-registry --enable-libstdcxx-debug --enable-version-specific-runtime-libs --disable-werror --build=mingw32 --prefix=/mingw
Thread model: win32
gcc version 4.5.0 (GCC)
Intel Core i3 M350 (x86)
UPD. На сервере CF тоже выдает некорректный результат. Попробуйте во вкладке "запуск".
UPD2. В одном из комментариев выдвинули дополнительное требование: включите оптимизатор (-O1/-O2)
UPD3. Две абсолютно одинаковые посылки под разными компиляторами получают разные вердикты: GCC - WA14 (240112), MSVC++ - OK (240115). Задача B из CF49
У меня тоже GCC версии 4.5.0. 32-бита, Windows 7. Программа корректно работает.
g++.exe -O2 -Wall -Wl,--stack=64000000,--enable-auto-import -o ! !.!
Win7 + GCC 3.4.2 (mingw-special)
Если использовать ключ -O2, то результат неверный.
Если не использовать, то результат верный.
Видать, это баги оптимизатора. На сервере, насколько я помню, стоит достаточно старая версия, и есть ключ -O2, вот и результат. Разумеется, это баги компилятора.
UPD:
на сервере стоит
GNU C++ 4
g++.exe -DONLINE_JUDGE -fno-asm -lm -s -x c++ -Wl,--stack=268435456 -O2 -o %name%.exe %1
Но, что интересно, -O1 также убивает корректность.
(Правка: 64-битная версия, 32-битную не проверял)
5.8 1 The behavior is undefined if the right operand is negative, or
greater than or equal to the length in bits of the promoted left operand.
Можно посмотреть соответствующие настройки.
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.4.3-4ubuntu5' --with-bugurl=file:///usr/share/doc/gcc-4.4/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --enable-shared --enable-multiarch --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.4 --program-suffix=-4.4 --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-plugin --enable-objc-gc --enable-targets=all --disable-werror --with-arch-32=i486 --with-tune=generic --enable-checking=release --build=i486-linux-gnu --host=i486-linux-gnu --target=i486-linux-gnu
Thread model: posix
gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5)