コンテストの制限時間が終了しました。
以降も提出を行うことができますが、順位集計には反映されません。
以降も提出を行うことができますが、順位集計には反映されません。
ソースコード
WITH CALCULATED_SCORES AS (
SELECT
ENTRIES.USER_ID,
SUM(CASE
WHEN SUBMISSIONS.STATUS = 'AC' THEN 100 -- ACの場合の得点
ELSE 0 -- それ以外の場合の得点
END) AS TOTAL_SCORE,
SUM(CASE
WHEN SUBMISSIONS.STATUS = 'AC' THEN
strftime('%s', SUBMISSIONS.SUBMITTED_AT) - strftime('%s', ENTRIES.STARTED_AT)
+ 300 * (
SELECT COUNT(*)
FROM SUBMISSIONS AS S
WHERE
S.USER_ID = ENTRIES.USER_ID
AND S.PROBLEM_ID = SUBMISSIONS.PROBLEM_ID
AND S.STATUS != 'AC'
AND strftime('%s', S.SUBMITTED_AT) < strftime('%s', SUBMISSIONS.SUBMITTED_AT)
) -- ACの場合の解答時間にペナルティを加算
ELSE 0 -- それ以外の場合の解答時間
END) AS EX_TIME,
SUM(CASE
WHEN SUBMISSIONS.STATUS != 'AC' AND strftime('%s', SUBMISSIONS.SUBMITTED_AT) < (
SELECT MAX(strftime('%s', S.SUBMITTED_AT))
FROM SUBMISSIONS AS S
WHERE
S.USER_ID = SUBMISSIONS.USER_ID
AND S.PROBLEM_ID = SUBMISSIONS.PROBLEM_ID
AND S.STATUS = 'AC'
AND strftime('%s', S.SUBMITTED_AT) < strftime('%s', SUBMISSIONS.SUBMITTED_AT)
) THEN 1 -- ACではなく、他のACよりも前に提出された場合の誤答数
ELSE 0 -- それ以外の場合の誤答数
END) AS WRONG_ANS
FROM
ENTRIES
LEFT JOIN
SUBMISSIONS
ON
ENTRIES.ID = SUBMISSIONS.ENTRY_ID
WHERE
ENTRIES.CONTEST_ID = 2
GROUP BY
ENTRIES.USER_ID
)
SELECT
RANK() OVER (ORDER BY TOTAL_SCORE DESC, EX_TIME ASC, USER_ID ASC) AS RANK,
USER_ID,
TOTAL_SCORE AS POINT,
EX_TIME,
WRONG_ANS
FROM
CALCULATED_SCORES
WHERE
TOTAL_SCORE > 0 -- 合計点数が0点でないことを確認
ORDER BY
RANK ASC, WRONG_ANS ASC, USER_ID ASC;
提出情報
提出日時 | 2023/07/20 17:04:55 |
コンテスト | 第3回 SQLコンテスト |
問題 | 順位計算 |
受験者 | megumilk-17 |
状態 (詳細) | RE (Runtime Error: 実行時エラー) |
メモリ使用量 | 78 MB |
メッセージ
SQLITE_ERROR: no such column: ENTRIES.ID
テストケース(通過数/総数)
0/2
状態
メモリ使用量
データパターン1
RE
77 MB
データパターン2
RE
78 MB