atercattus / quiz.sidenis.ru.solution

Мое решение для квиза от Sidenis (ставили стенд на GDG DevFest SIberia'18). Первое место.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Краткие правила

[https://quiz.sidenis.ru/#/tasks/king]

Напишите Java приложение под jdk 1.8.

Входные данные подаются приложению в стандартном потоке ввода (System.in). Приложение должно выводить ответ в стандартный поток вывода (System.out).

Решение проверяется на наборе тестов. Time Limit на один тест 2 секунды. За каждый непройденный тест (вердикт не АС) штраф 10 секунд. Memory Limit на один тест 256 Мб.

Решение задачи можно отправлять неограниченное количество раз. Победят те, чье решение в сумме затратит наименьшее количество процессорного времени.

Царь-задача

Дана квадратная матрица A[0...N-1, 0...N-1]. Вашей программе могут поступать запросы двух типов:

  1. Вычислить сумму элементов подматрицы;
  2. Модифицировать отдельный элемент матрицы.

Ваша задача обработать все запросы корректно и затратив на это как можно меньше процессорного времени.

Входные данные

Первая строка содержит целое число N (1 ⩽ N ⩽ 550) — размер матрицы.

Далее следуют N строк по N целых чисел в каждой — Ai,j элементы матрицы, −108 ⩽ Ai,j ⩽ 108;0 ⩽ i,j < N.

В следующей строке записано целое число Q — количество запросов, 0 ⩽ Q ⩽ 100100.

Далее следует Q строк, каждая из которых представляет описание запроса в одном из двух форматов:

Пять целых чисел разделенных пробелом K, X1, Y1, X2, Y2 — если запрос поиска суммы в подматрице A[X1...X2, Y1...Y2], 0 ⩽ X1 ⩽ X2; 0 ⩽ Y1 ⩽ Y2; X1 ⩽ X2 < N; Y1 ⩽ Y2 < N; K = 1; Четыре целых числа разделенных пробелом K, X, Y, P — если запрос модификации отдельного элемента матрицы (т.е. запрос вида A[X, Y] = P), 0 ⩽ X < N; 0 ⩽ Y < N; −108 ⩽ P ⩽ 108; K = 2.

Выходные данные

Для каждого запроса на вычисление суммы подматрицы, необходимо вывести одно целое число — сумму подматрицы, по одному в строке, в порядке следования запросов во входных данных.

Если во входных данных нет ни одного запроса на вычисление суммы подматрицы, то выходной поток следует оставить пустым.

Пример данных

Входные данные

4
-1 -5  1  2
1   2  3  4
5   6  7  8
9  10 11 12
5
1 0 0 0 0
1 1 1 2 1
2 0 0 2
1 0 0 0 0
1 0 0 3 3

Выходные данные

-1
5
2
78

Запуск

Решение (исходный код Java приложения) запускается на сервере (Intel(R) Xeon(R) CPU E5-2630 v4 @ 2.20GHz x 8, 8 Mb RAM, CentOS 7.5) с командной строкой:

java -Xmx256M -Xms16M -Xbatch -XX:+UseSerialGc -XX:-TieredCompilation -XX:CICompilerCount=1 Main

About

Мое решение для квиза от Sidenis (ставили стенд на GDG DevFest SIberia'18). Первое место.


Languages

Language:Java 60.2%Language:Shell 24.0%Language:PHP 15.7%