Предлагается хранить типы блоков в массиве. Каждый элемент - 2Б, количество элементов - 2^20 => всего требуется 2МБ.
При перезаписи блока и очередной переоценке необходимо учитывать типы данных в блоке до перезаписи (T0), после перезаписи (T1) и в соседних блоках (TL, TR).
Если T0 = T1, то количество кусков данных не изменяется, т.е. W[i+1] = W[i] TL = T0 = TR <> T1 -> W[i+1] = W[i] + 2 TL = T1 = TR <> T0 -> W[i+1] = W[i] - 2 TL = TR, T0 <> TL, T1 <> TL -> W[i+1] = W[i]
Если все четыре типа не совпадают, то W[i+1] = W[i] Если перезаписывается блок с адресом 0, считать, что тип TL не совпадает ни с одним из трех других.Аналогично при перезаписи блока с адресом , но для TR.
Рабо́чий стол (англ. desktop) — в компьютерной терминологии основное окно графической среды пользователя вместе с элементами, добавляемыми в него этой средой.
Обычно на рабочем столе отображаются основные элементы управления графической средой и, опционально, какое-либо фоновое изображение.
В некоторых рабочих средах (например, в MS Windows или в рабочих средах, удовлетворяющих требованиям freedesktop.org — KDE, GNOME и т. п.) с рабочим столом ассоциируется определённый каталог в файловой структуре компьютера (при этом обычно можно перетащить файл из стандартного для данной среды файлового менеджера на рабочий стол, и он будет туда скопирован). Ассоциированный каталог обычно находится в личной папке пользователя.
Так как рабочий стол практически всегда виден (либо его можно увидеть, свернув открытые окна), его используют для хранения часто использующихся файлов, документов и ссылок/ярлыков на них. Определение рабочего стола иногда расширяют, включая в него панель задач.
С точки зрения оконной системы рабочий стол может не являться окном низшего уровня (в системах Windows это можно заметить, завершив процесс «explorer.exe»).
Название «Рабочий стол» (точнее, «крышка рабочего стола», «столешница» — калька с англ. desktop) происходит от сравнения окон со стопкой бумаг, лежащих на столе.
При перезаписи блока и очередной переоценке необходимо учитывать типы данных в блоке до перезаписи (T0), после перезаписи (T1) и в соседних блоках (TL, TR).
Если T0 = T1, то количество кусков данных не изменяется, т.е. W[i+1] = W[i]
TL = T0 = TR <> T1 -> W[i+1] = W[i] + 2
TL = T1 = TR <> T0 -> W[i+1] = W[i] - 2
TL = TR, T0 <> TL, T1 <> TL -> W[i+1] = W[i]
Далее рассмотрим случаи, когда TL <> TR
(TL = T0, TR = T1) или (TR = T0, TL = T1) -> W[i+1] = W[i]
(TL = T0, TR <> T1) или (TR = T0, TL <> T1) -> W[i+1] = W[i] + 1
(TL = T1, TR <> T0) или (TR = T1, TL <> T0) - > W[i+1] = W[i] - 1
Если все четыре типа не совпадают, то W[i+1] = W[i]
Если перезаписывается блок с адресом 0, считать, что тип TL не совпадает ни с одним из трех других.Аналогично при перезаписи блока с адресом , но для TR.
Вроде все?