Skip to content

Balloon list may have problem on awarding the "first to solve" #2810

Open
@bhscer

Description

@bhscer

Description of the problem

I'm intersted in the logic of balloon.

I found that when the submission judged as Accepted, the balloon will be created immediately.

$this->balloonService->updateBalloons($contest, $submission, $judging);

But if we have two submission on the same problem (they are the eariliest submissions of the problem) , maybe we call them A and B, and the submit time of A is earlier than B, and A's judge finish time is later, the balloon of submission A will be created after submission B. But when we looking at the balloon list, we temporally found that the balloon of submission B is remindered as the first balloon.

public function collectBalloonTable(Contest $contest, bool $todo = false): array

In the collectBalloonTable function, we can see that award is determined by the balloon list

The above is my understanding of the balloon logic.

I don't know whether my worry is right or not. If it is, I think it is a bug or if you can tell me how can I temporaly solve this problem (maybe we should send balloons only if there submit time is much earlier than now to avaid eariler submission is not judged yet ?)

Your environment

Steps to reproduce

Create a problem with a long time limit.
Team A submit a code correct but run very slow first.
Team B submit a code correct and run fast later.

Expected behaviour

It's obvious Team A is the first to solve.

Actual behaviour

When Team B's submission is judged as correct but Team A's submission is still judging, we can found the balloon list maked Team B is the first to solve the problem.

Any other information that you want to share?

Sorry that currently I have no machine to test it. But according to my understing, I think this bug truely happens.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions