Skip to content

submissions.yaml: handling submissions that are sensitive to time limit #576

Description

@Matistjati

For context, I've had at least one install fail due to a submission getting TLE on Kattis' machine, but barely accepted on mine

ERROR PAC submission gemini2.cpp (C++) got TLE [testcase: testcase secret/group3/015-g1-smart, CPU: 6.90s @ testcase secret/group1/015-g1-smart]

I suspect that this issue is even worse for pass-fail problems (in legacy, partially_accepted never errors as long as the submissions in get accepted). I claim that submissions installs failing midway through due to submissions being sensitive to resource limits is highly undesirable.

The spec reads as follows:

Every submission matched by the glob pattern must satisfy:
- all test cases must have only verdicts present in permitted;
- at least one test case must have a verdict in required;
...

Some different ways of avoiding this problem:

1: Just don't add such submissions to be judged

Well, this feels bad, cause it's better to know exactly what ends up happening on the judge system.

2: Just hope for the best

IMO, a bad idea. Can also easily break forward compatibility (although trivially fixable).

3: Create a folder time_limit_sensitive_rejected or similar

Pretty much isomorphic to 1, but arguably better, since the tools can then still give info. HOWEVER: I claim that this option is actually terrible. There's a risk that some groups of problemsetters will start using something like

partially_accepted:
  permitted: [AC, RTE, TLE, WA]
  required: [AC, RTE, TLE, WA]

In that case, they have shot themselves in the foot hard enough to lose all warnings/errors for wrong verdicts. This anti-pattern can of course be warned about at the tooling level.

4: solve it at the tooling level

For example, intelligently decide what should be a warning vs error. I don't love this, since then my problem might install on some tools, but not others.

5: Explicitly specify what should be a warning vs error

One sensible way to spec it would be: Error if:

  • AC solution does not get AC on all test cases
  • score is violated
  • message is violated

And warning for most other things.

6: specify that errors should change to warnings for resource-sensitive submissions

I hate this. Places unreasonable burden on tooling to detect "resource-sensitive submission".


Have I missed something? Otherwise, I would consider option 5 to be the most sensible one (modulo exactly what we spec).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions