Задача 03D. Слава и честь

Автор:А. Марченко   Ограничение времени:1 сек
Входной файл:test.sql   Ограничение памяти:256 Мб
Выходной файл:test.log  

Условие

1096 год стал переломным в истории рыцарства. Король объявил, что рыцари, которые смогут выиграть хотя бы по одному турниру в каждом месяце этого года, получат особую медаль за отвагу. Эта медаль дает рыцарю право на землю, место в совете и гарантирует высокое положение в обществе. Многие смельчаки со всего королевства бросились участвовать в турнирах, чтобы доказать свое мастерство и получить эту награду.

Однако далеко не все смогли выдержать такой напряженный график. Ваша задача — выяснить, кто из рыцарей смог выполнить условие короля и навсегда вписать свое имя в историю. Для каждого такого рыцаря нужно вывести список всех турниров, которые он выиграл в 1096 году с указанием накопленной суммы очков славы после каждого турнира, чтобы летописцы могли внести их имена в список избранных.

В базе данных хранятся записи о рыцарях и турнирах. Каждый турнир имеет название, дату проведения и количество очков славы, которое получит победитель. Гарантируется, что не существует турниров, у которых победитель еще не определен.


    CREATE TABLE IF NOT EXISTS Knights (
        id INTEGER PRIMARY KEY,
        name TEXT NOT NULL
    );

    CREATE TABLE IF NOT EXISTS Tournaments (
        id INTEGER PRIMARY KEY,
        name TEXT NOT NULL,
        date DATE NOT NULL,
        glory INTEGER NOT NULL
    );

    CREATE TABLE IF NOT EXISTS TournamentWinners (
        id INTEGER PRIMARY KEY,
        tournament_id INTEGER NOT NULL UNIQUE,
        knight_id INTEGER NOT NULL,
        FOREIGN KEY (knight_id) REFERENCES Knights(id),
        FOREIGN KEY (tournament_id) REFERENCES Tournaments(id)
    );

Схема БД в UML-нотации:

Результатом выполнения запроса должен быть список кортежей (KnightName, TournamentName, TournamentDate, GloryPoints, TotalGlory), отсортированных по убыванию общей суммы очков славы рыцаря и возрастанию даты проведения турнира.

Описание полей запроса:

Решение следует представить в виде текстового файла, содержащего единственный SQL-запрос.

Формат входного файла

Пример тестовой БД.

Формат выходного файла

Пример вывода:

('Sir Percival of the Silver Shield', 'Frozen Shield', '1096-01-17', 35, 35)
('Sir Percival of the Silver Shield', 'Emerald Blade', '1096-02-18', 45, 80)
...
('Sir Percival of the Silver Shield', 'Icefang Challenge', '1096-12-12', 60, 890)
('Sir Godfrey of Blackwood', 'Icefang Challenge', '1096-01-05', 35, 35)
('Sir Godfrey of Blackwood', 'Frostwind Tournament', '1096-02-02', 15, 50)
...
('Sir Godfrey of Blackwood', 'Fire Cup', '1096-12-05', 65, 750)

Ограничения

Предполагается, что для работы с базой данных используется SQLite3.


0.031s 0.007s 17