kmyk-jikka / Jikka

an automated solver for problems of competitive programming
https://kmyk-jikka.github.io/Jikka/playground
Apache License 2.0
152 stars 11 forks source link

∑∑(aᵢ−aⱼ) で WA が出る #202

Closed kmyk closed 2 years ago

kmyk commented 2 years ago

Summary / 概要

https://twitter.com/magrofly/status/1432932410321031172

@magurofly ありがとう

Steps to reproduce / 再現方法

Expected behavior / 期待される挙動

せめて TLE してほしい

Actual behavior / 実際の挙動

WA するのはだめだろ

kmyk commented 2 years ago

これたすかる https://gist.github.com/magurofly/3ba197d58b9f95c6e804890095212e75

riantkb commented 2 years ago

C++ に詳しくないので知らなかったんですが、std::accumulate の返り値は第 3 引数 __init の方に一致するらしく、(int64_t)0 にしてあげたら AC になりました https://atcoder.jp/contests/abc186/submissions/25499595

kmyk commented 2 years ago

天才。私は式変形を疑ってばかりいました。

C++ のその仕様は知っていて accumulate を変換する時点ではちゃんと

https://github.com/kmyk/Jikka/blob/838de021c53dba2d7aadf30e411ea380a2868f65/src/Jikka/CPlusPlus/Convert/FromCore.hs#L367-L370

としてるのに、内部の構文木をコードに落とすところで余計なことをしていました:

https://github.com/kmyk/Jikka/blob/838de021c53dba2d7aadf30e411ea380a2868f65/src/Jikka/CPlusPlus/Format.hs#L199-L201

よければついでにプルリクもお願いしたい。せっかくデバッグ部分をやってもらったので