Estatísticas de problema: como cada métrica é computada — MOJ docs

Estatísticas de problema: como cada métrica é computada

Este documento explica, seção por seção, como a página Estatísticas do problema do Treino Livre (/treino/problema/stats/?id=<problema>) calcula o que mostra — incluindo as decisões estatísticas e as limitações honestas de cada número. A fonte de verdade é o endpoint GET /treino/problem-stats (contrato completo em API.md); esta página descreve a semântica.

De onde vêm os dados

Cada conta do treino guarda o próprio histórico de submissões (1 linha por submissão: problema, linguagem, veredicto e horário em epoch). A estatística de um problema é a agregação de todas as linhas de todos os usuários para aquele problema — só do Treino Livre: submissões feitas em contests de turma não entram.

Resumo

Métrica Cálculo
submissões total de linhas de history do problema
tentaram usuários distintos com ≥1 submissão
resolveram usuários distintos com ≥1 submissão aceita
taxa de acerto submissões aceitas ÷ submissões totais (por submissão, não por usuário)
subs / usuário submissões ÷ tentaram
dificuldade rótulo pela taxa de acerto por submissão: ≥90% muito fácil · ≥70% fácil · ≥50% médio · <50% difícil

Note que há duas taxas diferentes na página: a do Resumo é por submissão (mede quanto se erra tentando); a do percentil abaixo é por usuário (mede quem tentou e conseguiu). Elas contam coisas distintas de propósito.

Percentil de dificuldade contra o acervo

O card "X% do acervo é mais fácil que este" compara a taxa de sucesso por usuário (resolveram ÷ tentaram) deste problema com a de todos os problemas públicos do treino (a mesma base da lista de problemas).

Fatos

Linha do tempo

Calendário de atividade

Como resolvem

Tempo de execução (submissões aceitas)


Contrato do endpoint (campos e formatos): API.md, rota /treino/problem-stats. A exibição de veredictos segue a política central da plataforma (fonte única lib/verdict.sh — veredictos nunca são traduzidos).