 --
 -- Структура таблиці `spm_users`
 --
--- Створення: Квт 16 2018 р., 11:50
--- Останнє оновлення: Лип 30 2018 р., 19:58
+-- Створення: Сер 12 2018 р., 13:07
+-- Останнє оновлення: Сер 12 2018 р., 19:52
 --
 
 DROP TABLE IF EXISTS `spm_users`;

(1007, 1, 4, 8, 'Только цифры', '<p>Дана строка, состоящая из больших английских букв и цифр. Получить строку, состоящую их цифр исходной строки сохраняя порядок следования.&nbsp;</p><p>Если в строке нет символов-цифр, то вывести \"NO\".</p>', '<p>Во входном потоке задана строка символов состоящая из маленьких букв и цифр.</p>', '<p>В выходной поток вывести строку символов.</p>', 0x76617220732c723a737472696e673b0d0a202020202020693a696e74656765723b0d0a626567696e0d0a20202020726561646c6e2873293b0d0a20202020723a3d27273b0d0a20202020666f7220693a3d3120746f206c656e67746828732920646f0d0a202020202020202069662028735b695d20696e205b2730272e2e2739275d29207468656e20723a3d722b735b695d3b0d0a20202020696620286c656e677468287229203e203029207468656e2077726974652872290d0a2020202020202020656c736520777269746528274e4f27293b0d0a656e642e, 'freepascal', 1),
(1008, 1, 3, 8, 'Наибольший символ', '<p>Дана строка, состоящая из заглавных английских букв и цифр. Определить наибольший символ. Символ считается большим, если его код больший.</p>', '<p>В единственной строке входного потока дана строка символов, длина которой не превышает 255.</p>', '<p>В выходной поток вывести единственный символ.</p>', 0x76617220733a737472696e673b0d0a202020202020692c723a696e74656765723b0d0a626567696e0d0a20202020726561646c6e2873293b0d0a20202020723a3d303b0d0a20202020666f7220693a3d3120746f206c656e67746828732920646f0d0a20202020202020206966202872203c206f726428735b695d2929207468656e20723a3d6f726428735b695d293b0d0a20202020777269746528636872287229293b0d0a656e642e, 'freepascal', 1),
(1009, 1, 3, 8, 'Четырёхзначный палиндром', '<p>Требуется написать программу, определяющую, является ли четырехзначное натуральное число N палиндромом, т.е. числом, которое одинаково читается слева направо и справа налево.</p>', '<p>Во входном потоке записано натуральное число N (1000 ≤ N ≤ 9999).</p>', '<p>В выходной поток вывести слово \'YES\', если число N является палиндромом, или \'NO\' - если нет.</p>', 0x76617220733a737472696e673b0d0a202020202020692c722c6e3a696e74656765723b0d0a626567696e0d0a20202020726561646c6e2873293b0d0a20202020723a3d303b0d0a202020206e3a3d6c656e6774682873293b0d0a20202020666f7220693a3d3120746f206e20646f0d0a202020202020202069662028735b695d203c3e20735b6e2b312d695d29207468656e20723a3d722b313b0d0a2020202069662028723d3029207468656e207772697465282759455327290d0a2020202020202020656c736520777269746528274e4f27293b0d0a656e642e, 'freepascal', 1),
(1010, 1, 6, 8, 'Центральный символ', '<p>Строка разбивается на элементы по 5 символов в каждом. Сформировать слово, составленное из вторых символов элементов, содержащих 25-й от начала массива символ.</p>', '<p>Во входном потоке дана единственная строка, состоящая из заглавных английских букви и цифр. Длинна строки - 50 символов.</p>', '<p>В выходной поток вывести единственную строку.</p>', 0x76617220733a737472696e673b0d0a202020202020663a636861723b0d0a202020202020693a696e74656765723b0d0a626567696e0d0a20202020726561642873293b0d0a20202020663a3d735b32355d3b0d0a20202020693a3d313b0d0a202020207768696c652028693c3d35302920646f0d0a202020202069662028735b695d3d6629207468656e20626567696e0d0a2020202020202020206966202869206d6f6420353d3029207468656e20626567696e0d0a20202020202020202020202020777269746528735b692d335d293b0d0a20202020202020202020202020202020693a3d692b313b0d0a20202020202020202020202020202020656e640d0a202020202020202020202020656c7365206966202869206d6f6420353d3129207468656e20626567696e0d0a20202020202020202020202020777269746528735b692b315d293b0d0a20202020202020202020202020202020693a3d692b353b0d0a20202020202020202020202020202020656e640d0a202020202020202020202020656c736520626567696e0d0a20202020202020202020202020777269746528735b692d2069206d6f642035202b325d293b0d0a20202020202020202020202020202020693a3d692b28352d69206d6f642035292b313b0d0a20202020202020202020202020202020656e643b0d0a202020202020202020656e640d0a2020202020202020656c736520693a3d692b313b0d0a656e642e, 'freepascal', 1),
(1011, 1, 4, 8, 'Удалить начальные цифры', '<p>Дана строка. Удалить цифры с начала строки до первой буквы (начальные цифры). Вывести преобразованную строку и количество удаленных символов.</p>', '<p>В единственной строке входного потока дана строка, длинна которой не превышает 255 символов. Строка состоит из маленьких английских букв и цифр.</p>', '<p>В выходной поток вывести преобразованную строку символов и через пробел целое число - количество удаленных символов.<br></p>', 0x76617220733a737472696e673b0d0a202020202020723a696e74656765723b0d0a626567696e0d0a20202020726561646c6e2873293b0d0a20202020723a3d303b0d0a202020207768696c652028735b315d20696e205b2730272e2e2739275d2920616e6420286c656e6774682873293e302920646f20626567696e0d0a202020202020202064656c65746528732c312c31293b0d0a2020202020202020723a3d722b313b0d0a2020202020202020656e643b0d0a20202020777269746528732c2720272c72293b0d0a656e642e, 'freepascal', 1),
(1012, 1, 4, 8, 'Цифры цифры цифры цифры', '<p>Дана строка. Удалить цифры, окруженные с двух строн цифрами и в полученной строке найти сумму индексов символов-цифр.</p>', '<p>В единственной строке входного потока дана строка, длинна которой не превышает 255 символов. Строка состоит из маленьких английских букв и цифр.</p>', '<p>В выходной поток вывести преобразованную строку символов и через пробел целое число - сумму индексов.</p>', 0x76617220733a737472696e673b0d0a202020202020722c693a696e74656765723b0d0a626567696e0d0a20202020726561646c6e2873293b0d0a20202020723a3d303b0d0a20202020693a3d323b0d0a202020200d0a202020207768696c652028693c6c656e6774682873292920646f20626567696e0d0a20202020202020202069662028735b692d315d20696e205b2730272e2e2739275d2920616e642028735b692b315d20696e205b2730272e2e2739275d2920616e642028735b695d20696e205b2730272e2e2739275d29207468656e20626567696e0d0a2020202020202020202020202064656c65746528732c692c31293b0d0a20202020202020202020202020693a3d692d313b0d0a202020202020202020656e643b0d0a202020202020202020693a3d692b313b0d0a20202020656e643b0d0a202020200d0a20202020666f7220693a3d3120746f206c656e67746828732920646f0d0a202020202020202069662028735b695d20696e205b2730272e2e2739275d29207468656e20723a3d722b693b0d0a202020200d0a20202020777269746528732c2720272c72293b0d0a656e642e, 'freepascal', 1),
(1013, 1, 5, 6, 'Простое сравнение', '<p>Даны два массива чисел. Требуется вывести в выходной файл те элементы&nbsp;<span style=\"font-size: 1rem;\">первого массива (в том порядке, в каком они идут в первом массиве),&nbsp;</span><span style=\"font-size: 1rem;\">которых нет во втором массиве.</span></p>', '<p>Во входном файле записано сначала число N - количество элементов в первом&nbsp;<span style=\"font-size: 1rem;\">массиве, затем N чисел - элементы массива.</span></p><p><span style=\"font-size: 1rem;\">Затем записано число M - количество&nbsp;</span><span style=\"font-size: 1rem;\">элементов во втором массиве. Затем записаны элементы второго массива.</span></p><p><span style=\"font-size: 1rem;\">Количество элементов каждого массива не превышает 100. Сами элементы -&nbsp;</span><span style=\"font-size: 1rem;\">числа из диапазона Longint.</span></p>', '<p>В выходной файл выведите те элементы первого массива, которых нет во втором в&nbsp;<span style=\"font-size: 1rem;\">том порядке, в каком они идут в первом массиве.</span></p>', 0x636f6e7374206e6d61783d3130303b0d0a766172206e2c6d3a696e74656765723b0d0a20202020612c623a61727261795b312e2e6e6d61785d206f66206c6f6e67696e743b0d0a20202020692c6a3a696e74656765723b0d0a20202020663a626f6f6c65616e3b0d0a626567696e0d0a72656164286e293b0d0a666f7220693a3d3120746f206e20646f207265616428615b695d293b0d0a72656164286d293b0d0a666f72206a3a3d3120746f206d20646f207265616428625b6a5d293b0d0a666f7220693a3d3120746f206e20646f20626567696e0d0a2020663a3d747275653b0d0a2020666f72206a3a3d3120746f206d20646f0d0a20202020696620615b695d3d625b6a5d207468656e20663a3d66616c73653b0d0a202069662066207468656e20777269746528615b695d2c272027293b0d0a2020656e643b0d0a656e642e, 'freepascal', 1),

CREATE DATABASE IF NOT EXISTS `simplepm2` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
USE `simplepm2`;

DELIMITER $$
--
-- Функції
--
DROP FUNCTION IF EXISTS `RatingBase`$$
CREATE DEFINER=`root`@`localhost` FUNCTION `RatingBase` (`urId` BIGINT UNSIGNED) RETURNS FLOAT UNSIGNED READS SQL DATA
    SQL SECURITY INVOKER
begin

DECLARE sumVal BIGINT DEFAULT 0;
DECLARE rProblemsCount BIGINT DEFAULT 0;

SELECT
	SUM(`b`)
INTO
	`sumVal`
FROM
	`spm_submissions`
WHERE
	`status` = 'ready'
AND
	`testType` = 'release'
AND
    (
        `userId` = urId 
    AND
        `b` >= 0
    AND
        `olympId` = 0
    )
ORDER BY
	`b` DESC
LIMIT
	30
;

SELECT
COUNT(`submissionId`)
INTO
`rProblemsCount`
FROM
`spm_submissions`
WHERE
	`status` = 'ready'
AND
	`testType` = 'release'
AND
	(
        `userId` = urId
    AND
        `b` >= 0
    AND
        `olympId` = 0
    )
ORDER BY
	`b` DESC
LIMIT
	30
;

RETURN (sumVal / rProblemsCount);

end$$

DROP FUNCTION IF EXISTS `RatingCount`$$
CREATE DEFINER=`*`@`localhost` FUNCTION `RatingCount` (`uId` BIGINT UNSIGNED, `ReqOlympId` BIGINT UNSIGNED) RETURNS BIGINT(20) READS SQL DATA
    SQL SECURITY INVOKER
begin

DECLARE sumVal BIGINT DEFAULT 0;

SELECT
	SUM(`b`)
INTO
	sumVal
FROM
	`spm_submissions`
WHERE
	`status` = 'ready'
AND
	`testType` = 'release'
AND
	(
        `userId` = uId
    AND
        `b` > 0
    AND
        `olympId` = ReqOlympId
    );

RETURN sumVal;

end$$

DELIMITER ;

-- --------------------------------------------------------

--
-- Структура таблиці `spm_olympiads`
--
-- Створення: Сер 12 2018 р., 19:18
--

DROP TABLE IF EXISTS `spm_olympiads`;
