<?xml version="1.0" encoding="utf-8" ?><rss version="2.0" xmlns:tt="http://teletype.in/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>UniLecs</title><generator>teletype.in</generator><description><![CDATA[🤘🏻Задачи, головоломки, книги и другие радости программиста!]]></description><image><url>https://img1.teletype.in/files/40/2e/402e21f3-7ceb-416c-964f-fada10d33830.png</url><title>UniLecs</title><link>https://blog.unilecs.ru/</link></image><link>https://blog.unilecs.ru/?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=unilecs</link><atom:link rel="self" type="application/rss+xml" href="https://teletype.in/rss/unilecs?offset=0"></atom:link><atom:link rel="next" type="application/rss+xml" href="https://teletype.in/rss/unilecs?offset=10"></atom:link><atom:link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></atom:link><pubDate>Sat, 18 Apr 2026 00:44:34 GMT</pubDate><lastBuildDate>Sat, 18 Apr 2026 00:44:34 GMT</lastBuildDate><item><guid isPermaLink="true">https://blog.unilecs.ru/single-sign-On</guid><link>https://blog.unilecs.ru/single-sign-On?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=unilecs</link><comments>https://blog.unilecs.ru/single-sign-On?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=unilecs#comments</comments><dc:creator>unilecs</dc:creator><title>Объединение сервисов через SSO (Single Sign-On)</title><pubDate>Mon, 15 Dec 2025 02:39:14 GMT</pubDate><category>Статьи</category><description><![CDATA[Протоколы аутентификации]]></description><content:encoded><![CDATA[
  <p id="OFX4"><strong>Протоколы аутентификации</strong></p>
  <ul id="0wF6">
    <li id="f1Jt"><a href="https://www.cloudflare.com/ru-ru/learning/access-management/what-is-saml/" target="_blank">Clowdflare — один из провайдеров, предоставляющих SAML-аутентификацию</a></li>
    <li id="WcLO"><a href="https://developer.okta.com/docs/concepts/saml/" target="_blank">Описание флоу работы SAML</a></li>
    <li id="gcny"><a href="https://habr.com/ru/articles/803163/" target="_blank">Kerberos простыми словами на Хабре</a></li>
    <li id="3AVE"><a href="https://www.youtube.com/watch?v=sCybe9FAGOc" target="_blank">Beyond Passwords: How WebAuthn Actually Works — видео с описанием работы WebAuthn</a></li>
    <li id="RV2M"><a href="https://developer.mozilla.org/en-US/docs/Web/API/Web_Authentication_API" target="_blank">Web Authentication API — документация, поддерживаемая сообществом Mozilla</a></li>
  </ul>
  <p id="2lii"><strong>LDAP (Lightweight Directory Access Protocol)</strong></p>
  <ul id="IVpg">
    <li id="6zli"><a href="https://habr.com/ru/articles/538662/" target="_blank">Обзорная статья про LDAP на Хабре</a></li>
    <li id="10rW"><a href="https://habr.com/en/companies/otus/articles/738394/" target="_blank">Статья на Хабре о том, как развернуть LDAP в операционной системе Linux</a></li>
  </ul>
  <p id="SWJ1"><strong>Системы управления аутентификацией и авторизацией</strong></p>
  <ul id="kG3P">
    <li id="PBK8"><a href="https://www.keycloak.org/docs/latest/server_admin/index.html#_configuring-realms" target="_blank">Официальная документация Keyclock</a></li>
    <li id="PCbp"><a href="https://habr.com/ru/articles/720490/" target="_blank">Статья на Хабре об альтернативах системы Keycloak</a></li>
  </ul>

]]></content:encoded></item><item><guid isPermaLink="true">https://blog.unilecs.ru/security-audit</guid><link>https://blog.unilecs.ru/security-audit?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=unilecs</link><comments>https://blog.unilecs.ru/security-audit?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=unilecs#comments</comments><dc:creator>unilecs</dc:creator><title>Аудит безопасности и его требования</title><pubDate>Mon, 27 Oct 2025 01:45:25 GMT</pubDate><category>Статьи</category><description><![CDATA[Шаблоны атак]]></description><content:encoded><![CDATA[
  <p id="sXtH"><strong>Шаблоны атак</strong></p>
  <ul id="AT5p">
    <li id="wHCc"><a href="https://attack.mitre.org/matrices/enterprise/" target="_blank">MITRE ATT&amp;CK — база знаний тактик и техник кибератак, полезная для анализа и защиты корпоративных систем</a>.</li>
    <li id="5f7X"><a href="https://owasp.org/www-project-top-ten/" target="_blank">OWASP Top Ten — топ-10 уязвимостей веб-приложений для безопасной разработки.</a></li>
    <li id="2RR0"><a href="https://www.scanforsecurity.com/standards-methodologies/wasc.html" target="_blank">Web Application Security Consortium (WASC) — методология для оценки уязвимостей веб-приложений.</a></li>
  </ul>
  <p id="3cza"><strong>Анализ рисков</strong></p>
  <ul id="sfMp">
    <li id="TVjs"><a href="https://www.iso.org/standard/80585.html" target="_blank">Статья об ISO/IEC 27005 на официальном сайте ISO. Здесь описаны рекомендации, которые помогут выполнять требования стандарта и мероприятия по управлению рисками в сфере информационной безопасности.</a></li>
    <li id="S7w3"><a href="https://www.garant.ru/actual/persona/otvetstvennost/" target="_blank">Ответственность за нарушение закона о персональных данных в России</a></li>
  </ul>
  <p id="UnYJ"><strong>Инструменты, паттерны и фреймворки</strong></p>
  <ul id="iriy">
    <li id="CsPz"><a href="https://learn.microsoft.com/en-us/purview/information-protection" target="_blank">Статья о Microsoft Purview Information Protection на Microsoft Learn — всё о работе Purview</a></li>
    <li id="53jb"><a href="https://www.splunk.com/" target="_blank">Сайт Splunk</a></li>
    <li id="MQKo"><a href="https://rt-solar.ru/products/solar_dozor/" target="_blank">Сайт Solar Dozor</a></li>
    <li id="4kNo"><a href="https://aws.amazon.com/ru/security-hub/" target="_blank">AWS Security Hub — централизованное решение для анализа безопасности в облачной инфраструктуре AWS.</a></li>
    <li id="BOlC"><a href="https://www.microsoft.com/en-us/security/business/cloud-security/microsoft-defender-cloud/" target="_blank">Microsoft Defender for Cloud — решение, которое предлагает комплексную защиту облачных и гибридных ресурсов.</a></li>
    <li id="4u8M"><a href="https://cloud.google.com/security/products/security-command-center" target="_blank">Google Cloud Security Command Center — интегрированное решение безопасности для ресурсов Google Cloud.</a></li>
  </ul>

]]></content:encoded></item><item><guid isPermaLink="true">https://blog.unilecs.ru/realtime-architecture</guid><link>https://blog.unilecs.ru/realtime-architecture?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=unilecs</link><comments>https://blog.unilecs.ru/realtime-architecture?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=unilecs#comments</comments><dc:creator>unilecs</dc:creator><title>Построение realtime-архитектуры с нуля</title><pubDate>Sun, 21 Sep 2025 00:52:04 GMT</pubDate><category>Статьи</category><description><![CDATA[Rate Limiter]]></description><content:encoded><![CDATA[
  <p id="kN6l"><strong>Rate Limiter</strong></p>
  <ul id="tOlc">
    <li id="pdJq"><a href="https://developers.cloudflare.com/waf/rate-limiting-rules/best-practices/" target="_blank">Лучшие практики для Rate Limiting</a></li>
  </ul>
  <p id="rWdI"><strong>Кейсы по разработке высоконагруженных приложений</strong></p>
  <ul id="umx7">
    <li id="dc3i"><a href="https://instagram-engineering.com/instagration-pt-2-scaling-our-infrastructure-to-multiple-data-centers-5745cbad7834" target="_blank">Как Instagram развёртывал функционал в разных ЦОД</a></li>
    <li id="nG6a"><a href="https://medium.com/@tarunannapareddy1997/scaling-up-why-did-amazon-move-from-distributed-microservices-to-monolith-376254f2d772" target="_blank">Как команда Amazon Prime Video отказалась от микросервисов в пользу монолита</a></li>
  </ul>
  <p id="pUC1"><strong>Про реактивное программирование</strong></p>
  <ul id="wkDS">
    <li id="GcTG"><a href="https://habr.com/ru/companies/oleg-bunin/articles/543386/" target="_blank">Реактивное программирование на Java</a></li>
  </ul>
  <p id="LdqH"><strong>Про front-to-back интеграции</strong></p>
  <ul id="9Vb4">
    <li id="acov"><a href="https://practicum.yandex.ru/blog/customer-journey-map/" target="_blank">Зачем нужна customer journey map и как её правильно построить</a></li>
  </ul>
  <p id="2Ote"><strong>Инструменты, паттерны и фреймворки</strong></p>
  <ul id="PJUX">
    <li id="cA6c"><a href="https://www.ibm.com/think/topics/global-server-load-balancing" target="_blank">Разбор балансировщика нагрузки GSLB</a></li>
    <li id="IUQH"><a href="https://aws.amazon.com/what-is/restful-api/" target="_blank">Amazon Web Services, Что такое API RESTful?</a></li>
  </ul>

]]></content:encoded></item><item><guid isPermaLink="true">https://blog.unilecs.ru/ai-assistant</guid><link>https://blog.unilecs.ru/ai-assistant?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=unilecs</link><comments>https://blog.unilecs.ru/ai-assistant?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=unilecs#comments</comments><dc:creator>unilecs</dc:creator><title>Создание AI-ассистента</title><pubDate>Sun, 27 Jul 2025 20:34:44 GMT</pubDate><category>Статьи</category><description><![CDATA[Искусственный интеллект]]></description><content:encoded><![CDATA[
  <p id="85X2"><strong>Искусственный интеллект</strong></p>
  <ul id="SXWe">
    <li id="z8mR"><a href="https://www.oreilly.com/radar/software-architecture-in-an-ai-world/" target="_blank">Software Architecture in an AI World</a></li>
    <li id="CNkI"><a href="https://thecode.media/machine-loving/" target="_blank">4 проекта, где Machine Learning приносит пользу</a></li>
  </ul>
  <p id="4R1n"><strong>Нейросети и машинное обучение</strong></p>
  <ul id="o2cx">
    <li id="03x4"><a href="https://habr.com/ru/companies/oleg-bunin/articles/340184/" target="_blank">Статья для углубления знаний по нейросетевым структурам</a></li>
    <li id="uyo2"><a href="https://education.yandex.ru/handbook/ml" target="_blank">Электронный учебник от ШАД</a></li>
  </ul>
  <p id="3qPR"><strong>ModelOps</strong></p>
  <ul id="E0b8">
    <li id="pjDF"><a href="https://habr.com/ru/companies/sas/articles/596655/" target="_blank">Отличная статья на кейсе SAS</a></li>
    <li id="REvM"><a href="https://www.youtube.com/watch?v=PrbqQdROpgk" target="_blank">Полезный вебинар от GlowByte в Яндекс Облаке</a></li>
    <li id="aBDe"><a href="https://neptune.ai/blog/modelops" target="_blank">Разбор понятий ModelOps на конкретных инструментах</a></li>
  </ul>
  <p id="sTWc"><strong>Модульные диалоговые системы</strong></p>
  <ul id="s11F">
    <li id="8H67"><a href="https://www.ibm.com/topics/ai-ethics" target="_blank">Статья от IBM про этичность AI-решений</a></li>
    <li id="7fBa"><a href="https://habr.com/ru/companies/inferit/articles/745230/" target="_blank">Этика и безопасность искусственного интеллекта</a></li>
    <li id="zNmg"><a href="https://habr.com/ru/companies/yandex/articles/349372/" target="_blank">Как устроена Алиса. Лекция Яндекса</a></li>
    <li id="uFTn"><a href="https://youtu.be/fHQAT6rYO7c" target="_blank">Создание QA-ассистента для чат-бота с Yandex DataSphere</a></li>
  </ul>

]]></content:encoded></item><item><guid isPermaLink="true">https://blog.unilecs.ru/migration-services-to-cloud</guid><link>https://blog.unilecs.ru/migration-services-to-cloud?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=unilecs</link><comments>https://blog.unilecs.ru/migration-services-to-cloud?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=unilecs#comments</comments><dc:creator>unilecs</dc:creator><title>Миграция сервисов в облако</title><pubDate>Sat, 12 Jul 2025 22:20:52 GMT</pubDate><category>Статьи</category><description><![CDATA[Инструменты, паттерны и фреймворки]]></description><content:encoded><![CDATA[
  <ul id="ZWS4">
    <li id="V1zK"><a href="https://habr.com/ru/articles/837514/" target="_blank">Серия постов на тему архитектуры облачных вычислений</a></li>
    <li id="jZJR"><a href="https://yandex.cloud/ru/blog/posts/2022/04/cloud-computing" target="_blank">Примеры продуктов по моделям развёртывания и услуг</a></li>
    <li id="5gkl"><a href="https://scale.yandex.cloud/" target="_blank">Конференция по облачным технологиям от Яндекса</a></li>
    <li id="o1sO"><a href="https://www.litres.ru/book/michael-kavis-j/architecting-the-cloud-design-decisions-for-cloud-computin-28300569/" target="_blank">Книга Architecting the Cloud: Design Decisions for Cloud Computing Service Models (SaaS, PaaS, and IaaS)</a></li>
  </ul>
  <p id="dL2j"><strong>Инструменты, паттерны и фреймворки</strong></p>
  <ul id="uPJ4">
    <li id="8tSW"><a href="https://habr.com/ru/specials/539502/" target="_blank">Исследование рынка облачных провайдеров и мнение экспертов</a></li>
    <li id="ds3n"><a href="https://yandex.cloud/ru/solutions/migration" target="_blank">Статья и сервис по планированию миграции на Yandex Cloud</a></li>
    <li id="4oxg"><a href="https://yandex.cloud/ru/docs/application-load-balancer/" target="_blank">Аpplication Load Balancer от Yandex Cloud</a></li>
  </ul>
  <p id="IX3N"><strong>IaC-инструменты</strong></p>
  <ul id="xE5x">
    <li id="ZkGN"><a href="https://developer.hashicorp.com/terraform?product_intent=terraform" target="_blank">Terrform</a></li>
    <li id="DveJ"><a href="https://aws.amazon.com/ru/cloudformation/" target="_blank">AWS CloudFormation</a></li>
    <li id="uAuM"><a href="https://learn.microsoft.com/ru-ru/azure/azure-resource-manager/management/overview" target="_blank">Общие сведения об Azure Resource Manager</a></li>
    <li id="nuoD"><a href="https://cloud.google.com/deployment-manager/docs" target="_blank">Google Cloud Deployment Manager documentation</a></li>
    <li id="XGRY"><a href="https://yandex.cloud/ru/docs/tutorials/infrastructure-management/terraform-quickstart?utm_referrer=https%253A%252F%252Fyandex.ru%252Fsearch%253Fclid%253D1906725%2526text%253Dterraform%252Byandex%252Bcloud%2526lr%253D21621" target="_blank">Начало работы с Terrafom </a></li>
  </ul>

]]></content:encoded></item><item><guid isPermaLink="true">https://blog.unilecs.ru/observability-monitoring</guid><link>https://blog.unilecs.ru/observability-monitoring?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=unilecs</link><comments>https://blog.unilecs.ru/observability-monitoring?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=unilecs#comments</comments><dc:creator>unilecs</dc:creator><title>Повышение отказоустойчивости и наблюдаемости приложения</title><pubDate>Fri, 27 Jun 2025 04:05:35 GMT</pubDate><category>Статьи</category><description><![CDATA[Подходы к мониторингу]]></description><content:encoded><![CDATA[
  <ul id="Skku">
    <li id="qPv5"><a href="https://developer.mozilla.org/ru/docs/Web/HTTP/Caching" target="_blank">Документация по HTTP-кешированию от MDN</a></li>
    <li id="cz0C"><a href="https://www.youtube.com/watch?v=YlXJMCdssAI" target="_blank">Запись доклада Паттерны отказоустойчивой архитектуры</a></li>
  </ul>
  <p id="r5Tv"><strong>Подходы к мониторингу</strong></p>
  <ul id="4Mgl">
    <li id="Oj4A"><a href="https://brendangregg.com/usemethod.html" target="_blank">Обзор метода USE в блоге Брендана Грегга</a></li>
    <li id="RdG1"><a href="https://www.w3.org/TR/trace-context/?ref=traefik.io" target="_blank">Рекомендации W3C о trace context</a></li>
    <li id="saiB"><a href="https://ivan-kurchenko.medium.com/building-decoupled-monitoring-with-opentelemetry-5d2755e15922" target="_blank">Статья о создании раздельного мониторинга с помощью OpenTelemetry</a></li>
  </ul>
  <p id="A6u3"><strong>Про Prometheus и Grafana</strong></p>
  <ul id="QDsd">
    <li id="wQ4B"><a href="https://www.youtube.com/watch?app=desktop&v=XToKHYXSUyc" target="_blank">Google Cloud Tech Custom Metrics with Prometheus</a></li>
    <li id="Diek"><a href="https://habr.com/ru/companies/slurm/articles/715762/" target="_blank">Cоветы для начинающих SRE-инженеров</a></li>
    <li id="RfDw"><a href="https://blog.kvv213.com/2023/12/grafana-alerting-ponyat-i-prostit/" target="_blank">Подробная и интересная настройка алёртов в Grafana</a></li>
  </ul>
  <p id="vtVV"><strong>Elasticsearch, Logstash и Kibana</strong></p>
  <ul id="2vtT">
    <li id="ldQ5"><a href="https://habr.com/ru/articles/165059/" target="_blank">Статья на Хабре про настройку Logstash</a></li>
    <li id="FTtL"><a href="https://habr.com/ru/companies/citymobil/articles/521802/" target="_blank">Статья на Хабре с примером настройки дашборда в Kibana</a></li>
    <li id="P4Ih"><a href="https://github.com/db-exp/elka" target="_blank">Файлы конфигурации ELK на GitHub</a></li>
    <li id="M7xs"><a href="https://www.elastic.co/blog/implementing-hot-warm-cold-in-elasticsearch-with-index-lifecycle-management" target="_blank">Статья в блоге Elastic о том, как настроить Hot-Warm-Cold архитектуру для индекса с помощью ILM</a></li>
    <li id="kC4G"><a href="https://yandex.cloud/ru/blog/posts/2023/04/managed-opensearch-overview" target="_blank">Обзор OpenSearch от Yandex Cloud</a></li>
    <li id="cDdb"><a href="https://habr.com/ru/articles/662527/" target="_blank">Статья на Хабре про то, как установить и настроить стек OpenSearch</a></li>
    <li id="HULb"><a href="https://programmersought.com/article/92224903019/" target="_blank">Статья про географические типы данных Elasticsearch</a></li>
    <li id="JmvN"><a href="https://ezyforanykey.blogspot.com/2021/01/elk-master-nodesetup-high-availability.html" target="_blank">Статья о том, как настроить отказоустойчивый ELK</a></li>
  </ul>
  <p id="laaH"><strong>Инструменты для трейсинга</strong></p>
  <ul id="yFlA">
    <li id="IN7D"><a href="https://habr.com/ru/companies/ru_mts/articles/537892/" target="_blank">Статья на Хабре от разработчиков МТС о том, как применять OpenTelemetry</a></li>
    <li id="29yU"><a href="https://dzone.com/articles/distributed-tracing-with-zipkin-and-elk" target="_blank">Статья о распределённом трейсинге с применением Zipkin и ELK</a></li>
    <li id="pUIi"><a href="https://grafana.com/blog/2023/12/18/opentelemetry-best-practices-a-users-guide-to-getting-started-with-opentelemetry/" target="_blank">Гайд по лучшим практикам для использования OpenTelemetry</a></li>
    <li id="3c0A"><a href="https://signoz.io/blog/opentelemetry-vs-prometheus/" target="_blank">Сравнение OpenTelemetry и Prometheus</a></li>
  </ul>

]]></content:encoded></item><item><guid isPermaLink="true">https://blog.unilecs.ru/avg-math-points</guid><link>https://blog.unilecs.ru/avg-math-points?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=unilecs</link><comments>https://blog.unilecs.ru/avg-math-points?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=unilecs#comments</comments><dc:creator>unilecs</dc:creator><title>Средний балл по математике</title><pubDate>Sun, 20 Apr 2025 23:59:14 GMT</pubDate><media:content medium="image" url="https://img4.teletype.in/files/bb/07/bb07ea80-b463-4a4a-8c82-fb4b00b631fa.png"></media:content><category>Головоломки</category><description><![CDATA[<img src="https://img3.teletype.in/files/ac/36/ac369ad8-f42f-4e43-811b-1f49adead5a1.jpeg"></img>Может ли средний балл всего класса по математике быть больше 4?]]></description><content:encoded><![CDATA[
  <figure id="oieg" class="m_column">
    <img src="https://img3.teletype.in/files/ac/36/ac369ad8-f42f-4e43-811b-1f49adead5a1.jpeg" width="1500" />
  </figure>
  <p id="Z4jh"><em>Может ли средний балл всего класса по математике быть больше 4?</em></p>
  <h2 id="1Q82">Разбор</h2>
  <p id="3Rp4">Пусть есть </p>
  <ol id="bMwo">
    <li id="ZGqG">2 человека, которые имеют по математике 5<br />и смотрят только мультфильм;</li>
    <li id="NWu5">3 человека, у которых по математике 3, а смотрят они и то, и другое;</li>
    <li id="vsIG">ещё 2 человека, у которых по математике тоже 5, но смотрят они только футбол.</li>
  </ol>
  <p id="Qoz0">Тогда средний балл любой из двух групп равен:</p>
  <p id="FDlF">(5 * 2 + 3 * 3) / 5 = 19 / 5 &lt; 4</p>
  <p id="cHS7">Однако общий средний балл равен:</p>
  <p id="O1u0">(5 * 4 + 3 * 3) / 7 = 29 / 7 &gt; 4</p>
  <p id="lOiV"><strong>Ответ</strong>: может</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://blog.unilecs.ru/max-bugs-solution</guid><link>https://blog.unilecs.ru/max-bugs-solution?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=unilecs</link><comments>https://blog.unilecs.ru/max-bugs-solution?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=unilecs#comments</comments><dc:creator>unilecs</dc:creator><title>Задача. Оптимальное заполнение мешков</title><pubDate>Mon, 17 Mar 2025 01:54:47 GMT</pubDate><category>Задачи</category><description><![CDATA[Даны n мешков и два целочисленных массива capacity и rocks.]]></description><content:encoded><![CDATA[
  <p id="Z61v">Даны n мешков и два целочисленных массива capacity и rocks.</p>
  <ul id="c7UW">
    <li id="dhQP">i-й мешок может вмещать максимум камней вместимостью capacity[i] и содержит rocks[i] камней.</li>
    <li id="S56a">Также дано целое число additionalRocks - количество дополнительных камней, которые можно поместить в любой из мешков.</li>
  </ul>
  <p id="zS4U"><em>Необходимо вернить МАКСИМАЛЬНОЕ количество мешков, которые могут иметь полную вместимость после размещения дополнительных камней в некоторых мешках.</em></p>
  <p id="60sa"><strong>Пример</strong></p>
  <ul id="fWFj">
    <li id="eXeG">capacity = [2,3,4,5]</li>
    <li id="2uGe">rocks = [1,2,4,4]</li>
    <li id="xxTa">additionalRocks = 2</li>
  </ul>
  <p id="8MxK"><em>Output</em>: 3</p>
  <p id="oie4"><em>Пояснение: п</em>о одному камню кладем в 1й и 2й мешок. Тогда количество камней в каждом мешке равно [2,3,4,4]. И первые 3 мешка полностью заполнены.</p>
  <h2 id="4du7">Разбор</h2>
  <p id="bUZM">Классический жадный алгоритм. </p>
  <ol id="xbHd">
    <li id="e9Y6">На 1м этапе найдем размер свободного места в мешках. </li>
    <li id="Xqam">На 2м этапе отсортируем массив по возрастанию свободных мест в мешках.</li>
    <li id="PUeO">На 3м этапе будем использовать дополнительные камни для заполнения мешков пока это возможно.</li>
    <li id="PlZp">Вернем количество полностью заполненных мешков.</li>
  </ol>
  <h2 id="rUgX">Реализация</h2>
  <pre id="cxtE">static int MaxBags(int[] capacity, int[] rocks, int additionalRocks) {
	for (int i = 0; i &lt; capacity.Length; i++)
	{
		capacity[i] -= rocks[i];
	}

	Array.Sort(capacity);

	int result = 0;
	for (int i = 0; i &lt; capacity.Length; i++)
	{
		if (capacity[i] &gt; 0 &amp;&amp; additionalRocks == 0)
			return result;

		if (capacity[i] == 0)
		{
			result++;    
		}
		else if (capacity[i] &lt;= additionalRocks)
		{
			additionalRocks -= capacity[i];
			result++;
		}
	}

	return result;
}</pre>
  <p id="AXAv"><a href="https://gist.github.com/unilecs/8ab18a06ecff6e47d48402499c90ec75" target="_blank">https://gist.github.com/unilecs/8ab18a06ecff6e47d48402499c90ec75</a><br /><br /><strong>Python</strong>:<br /><a href="https://gist.github.com/unilecs/ebf505863c07ff797cf3c59a0b9aa014" target="_blank">https://gist.github.com/unilecs/ebf505863c07ff797cf3c59a0b9aa014</a><br /><br /><strong>Play-test (C#):</strong><br /><a href="https://dotnetfiddle.net/kaLbf9" target="_blank">https://dotnetfiddle.net/kaLbf9</a></p>

]]></content:encoded></item><item><guid isPermaLink="true">https://blog.unilecs.ru/max-bugs</guid><link>https://blog.unilecs.ru/max-bugs?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=unilecs</link><comments>https://blog.unilecs.ru/max-bugs?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=unilecs#comments</comments><dc:creator>unilecs</dc:creator><title>Анонс. Оптимальное заполнение мешков</title><pubDate>Mon, 24 Feb 2025 05:59:15 GMT</pubDate><category>Задачи</category><description><![CDATA[Даны n мешков и два целочисленных массива capacity и rocks.]]></description><content:encoded><![CDATA[
  <p id="Z61v">Даны n мешков и два целочисленных массива capacity и rocks. </p>
  <ul id="c7UW">
    <li id="dhQP">i-й мешок может вмещать максимум камней вместимостью capacity[i] и содержит rocks[i] камней. </li>
    <li id="S56a">Также дано целое число additionalRocks - количество дополнительных камней, которые можно поместить в любой из мешков.</li>
  </ul>
  <p id="zS4U"><em>Необходимо вернить МАКСИМАЛЬНОЕ количество мешков, которые могут иметь полную вместимость после размещения дополнительных камней в некоторых мешках.</em></p>
  <p id="60sa"><strong>Пример</strong></p>
  <ul id="fWFj">
    <li id="eXeG">capacity = [2,3,4,5]</li>
    <li id="2uGe">rocks = [1,2,4,4]</li>
    <li id="xxTa">additionalRocks = 2</li>
  </ul>
  <p id="8MxK"><em>Output</em>: 3</p>
  <p id="oie4"><em>Пояснение: п</em>о одному камню кладем в 1й и 2й мешок. Тогда количество камней в каждом мешке равно [2,3,4,4]. И первые 3 мешка полностью заполнены.</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://blog.unilecs.ru/defuse-bomb-solution</guid><link>https://blog.unilecs.ru/defuse-bomb-solution?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=unilecs</link><comments>https://blog.unilecs.ru/defuse-bomb-solution?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=unilecs#comments</comments><dc:creator>unilecs</dc:creator><title>Task. Разминировать бомбу</title><pubDate>Fri, 24 Jan 2025 05:38:20 GMT</pubDate><category>Задачи</category><description><![CDATA[Задача. Необходимо разминировать бомбу. У вас есть код в виде кругового массива длиной N и ключ k. Чтобы расшифровать код, нужно заменить каждое число. Все числа заменяются одновременно.]]></description><content:encoded><![CDATA[
  <p id="nWZn"><strong>Задача.</strong> Необходимо разминировать бомбу. У вас есть код в виде кругового массива длиной N и ключ k. Чтобы расшифровать код, нужно заменить каждое число. Все числа заменяются одновременно.</p>
  <ul id="xQCo">
    <li id="i6Ra">Если k &gt; 0, замените i-е число суммой следующих k чисел.</li>
    <li id="90mv">Если k &lt; 0, замените i-е число суммой предыдущих k чисел.</li>
    <li id="N1WJ">Если k == 0, замените i-е число на 0.</li>
  </ul>
  <p id="ELjQ"><strong><em>Необходимо вернуть расшифрованный код.</em></strong></p>
  <p id="SSvc"><strong>Пояснение</strong>: в циклическом массиве следующий элемент после arr[N - 1] - это arr[0]. Соответственно, предыдущий элемент для arr[0] - это arr[N - 1].</p>
  <p id="SkVD">Входные данные: размер массива, а также элементы массива - значения от 0 до 100.</p>
  <p id="RFjO"><strong>Примеры</strong></p>
  <ol id="1bfl">
    <li id="kmek">arr [5,7,1,4], k = 3<br /><em>Output</em>: [12,10,16,13] <br /><em>Пояснение</em>: [7+1+4, 1+4+5, 4+5+7, 5+7+1]</li>
    <li id="7CJC">arr = [2,4,9,3], k = -2 <br /><em>Output</em>: [12,5,6,13] <br /><em>Пояснение</em>: [3+9, 2+3, 4+2, 9+4]</li>
  </ol>
  <h2 id="sj4O">Разбор</h2>
  <p id="nIlj">Рассмотрим различные случаи:</p>
  <ol id="nxhR">
    <li id="sbb2">k == 0. Если ключ равен нулю, то по условию все элементы заменяются на 0.</li>
    <li id="sSYp">k &gt; 0. Для каждого элемента массива суммируем k последующих элементов, учитывая круговой характер массива. При выходе за пределы индекса массива, используем модуль % для перехода к началу.</li>
    <li id="2oPO">k &lt; 0. Для каждого элемента массива суммируем |k| предыдущих элементов. Переход к началу массива также выполняется с помощью индексации %.</li>
  </ol>
  <p id="lMrI">Детали смотрите ниже.</p>
  <h2 id="y0kw">Реализация</h2>
  <pre id="7Cmp">static int[] DefuseBomb(int[] arr, int k) {
	int N = arr.Length;
    var res = new int[N];
    if (k == 0) {
        return res;
    }

    for (int i = 0; i &lt; N; i++)
    {
        if (k &gt; 0) {
            for (int j = i + 1; j &lt; i + k + 1; j++) {
                res[i] += arr[j % N];
            }
        }
        else 
        {
            for (int j = i - Math.Abs(k); j &lt; i; j++) {
                res[i] += arr[(j + N) % N];
            }
        }
    }

    return res;
}</pre>
  <p id="gvzs"><a href="https://gist.github.com/unilecs/69dff66f69bf3b70780ad4291b1b66bc" target="_blank">https://gist.github.com/unilecs/69dff66f69bf3b70780ad4291b1b66bc</a></p>
  <h3 id="GlGU">Play-test</h3>
  <p id="ZbEq"><a href="https://dotnetfiddle.net/i8HSnp" target="_blank">https://dotnetfiddle.net/i8HSnp</a></p>

]]></content:encoded></item></channel></rss>